1

私のコードには小さな問題があります。3 つのクラスすべてをリンクして、単純なプラットフォーマーを作成したいと考えています。コードは次のとおりです。

配列クラス:

package 
{
import flash.display.*;
public dynamic class setupStage extends Thiny
{
    var mapWid = 24;
    var mapHei = 40;
    var tileSide = 10;
    var totalTiles = mapWid * mapHei;
    var cell:tile=new tile();

    var firstStage:Array=[
      /*1*/[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]
      /*2*/[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1]
      /*3*/[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1]
      /*4*/[1,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1]
      /*5*/[1,0,0,0,1,0,0,0,0,0,1,1,1,1,1,0,0,0,1,1,1,1,0,1]
      /*6*/[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1]
      /*7*/[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1]
      /*8*/[1,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1]
      /*9*/[1,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,1]
     /*10*/[1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1]
     /*11*/[1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,1]
     /*12*/[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1]
     /*13*/[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1]
     /*14*/[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1]
     /*15*/[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1]
     /*16*/[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1]
     /*17*/[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,1]
     /*18*/[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1]
     /*19*/[1,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,1]
     /*20*/[1,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,1]
     /*21*/[1,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1]
     /*22*/[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1]
     /*23*/[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1]
     /*24*/[1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1]
     /*25*/[1,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1]
     /*26*/[1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1]
     /*27*/[1,0,1,1,1,1,1,0,0,1,1,1,0,1,1,1,1,0,0,0,0,0,0,1]
     /*28*/[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,1,1,1,1]
     /*29*/[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1]
     /*30*/[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1]
     /*31*/[1,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,1,1,1,0,0,0,0,1]
     /*32*/[1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1]
     /*33*/[1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1]
     /*34*/[1,0,0,0,0,0,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1]
     /*35*/[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1]
     /*36*/[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1]
     /*37*/[1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1]
     /*38*/[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1]
     /*39*/[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1]
     /*40*/[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]
      ];
    function setupStage()
    {
        trace("access granted");
    }
    function drawMap():void
    {
        for (var i:int=0; i<mapWid; i++)
        {
            for (var u:int=0; u<mapHei; u++)
            {
                cell.gotoAndStop(firstStage[i][u]+1);
                cell.x = tileSide * i;
                cell.y = tileSide * u;
                with (stage)
                {
                    stage.addChild(cell);
                }
            }
        }
    }
}
}

移動クラス:

package 
{
import flash.display.*;
import flash.utils.*;
import flash.events.*;
import flash.sampler.StackFrame;

public dynamic class JAJEBIE extends Thiny{
var granica:setupStage = new setupStage();
var thinX = 0;
var thinY = 0;
var acc = 6;
var thin:thiny1 = new thiny1();
var przycisk:Object = {};

stage.addEventListener(KeyboardEvent.KEY_DOWN,Move);
stage.addEventListener(KeyboardEvent.KEY_UP,Halt);
//with (thin){addEventListener(Event.ENTER_FRAME,Opadanie);}

function wrzut():void
{
    addChild(thin);
    thin.x = 200;
    thin.y = 390;

}
function Move(k:KeyboardEvent):void
{
    przycisk[k.keyCode] = true;
    if (przycisk[Keyboard.LEFT] && granica.firstStage[thinX][thinY] == 0 && granica.firstStage[thinX - 1][thinY] == 0)
    {
        thin.x = thin.x - 10;
    }
    if (przycisk[Keyboard.RIGHT] && granica.firstStage[thinX][thinY] == 0 &&     granica.firstStage[thinX - 1][thinY] == 0)
    {
        thin.x = thin.x + 10;
    }
    if (przycisk[Keyboard.SPACE])
    {
        acc = 3;
        thin.y = thin.y + 30;
    }
}
//function Opadanie(Event);
//{
//thin.y = thin.y - 30;
//}
function Halt(k:KeyboardEvent):void
{
    przycisk[k.keyCode] = false;
}

}

}

メインの fla ファイル:

stop();
import flash.events.Event;
import flash.display.DisplayObject;
import flash.utils.*;
import flash.events.*;
import flash.sampler.StackFrame;

stage.addEventListener(Event.ENTER_FRAME,initialize);

function initialize(main_event:Event):void{
        with(setupStage){drawMap();};
        with(JAJEBIE){wrzut();};
        stage.removeEventListener(Event.ENTER_FRAME,initialize);
}

多くのことを試しましたが、コードの問題をすべて削除した後でも、コンパイラはエラーをスローし続けました。メイン クラスはすべてにパッチを適用したくないようです。どんな助けでも大歓迎です!ありがとう!

4

1 に答える 1

0

プラットフォーマー レベルとプレイヤーの見本が得られるように、各クラスとのインスタンスが必要です。あなたのコードはそれがコンストラクターを持たないため静的クラスであると言っているので、クラス名を介してそれをアドレス指定することは正しいです.JAJEBIEsetupStageJAJEBIEJAJEBIE

var jajebie:JAJEBIE;
function initialize(main_event:Event):void{
    jajebie=new JAJEBIE();
    addChild(jajebie);
    addChild(jajebie.granica);
    // while neither is added to stage, they 
    // cannot reach the stage! You have to point them to actual stage.
    jajebie.granica.drawMap(); // now, as we have stage access, draw the map
    jajebie.wrzut();
    stage.removeEventListener(Event.ENTER_FRAME,initialize);
}

また、cell全体で 1 つのインスタンスしかなくsetupStage、その座標の設定とステージへの配置を繰り返し試みています。cellこのアプローチは間違っています。画面上の単一のインスタンスになってしまうため、右下のインスタンスになります。cellこれを修正するには、内部サイクル内で再インスタンス化します。

function drawMap():void { for (var i:int=0; i

そして最後に、Flash が何を伝えたいのかを理解できるように、自分でエラー メッセージを読んで解釈する方法を学ぶ必要があります。たとえば、エラー 5000 はMovieClip、いずれかのクラスに対して特定のクラス (ほとんどの場合 ) を拡張する必要があることを意味し、コードの大部分をすぐに作り直す必要がある場合があります。

于 2013-07-01T05:30:37.320 に答える