0

私は過去数日間、これを理解しようとして頭を悩ませてきました:

私は現在、Flashpunk を使用してレベル ベースのゲームを作成しています。私がレベルを処理する方法は、次のように OGMO エディター ファイル (基本的には拡張子が異なる単なる xml ファイルです) を配列で渡すだけです。

public static var worldOneList:Array = new Array(LEVEL_WORLD_1_1, LEVEL_WORLD_1_2,etc..);
public static var worldTwoList:Array = new Array(LEVEL_WORLD_1_1, LEVEL_WORLD_1_2,etc..);

public static var worldLists:Array = new Array(worldOneList,worldTwoList,etc...);

次に、マップの作成とレベルのロジックを処理するクラスの形式で呼び出します。

    public static function toLevel(worldID:int, levelID:int):void
    {
        FP.world = new LevelBase(worldLists[worldID][levelID]);
    }

レベル選択画面からレベルに問題なくアクセスできますが、レベルを完了して次のレベルに進むことを選択すると、スローされます。

Error #1007: Instantiation attempted on a non-constructor.

スタックのトップが (FP で) を指している場合:

        public static function getXML(file:Class):XML
    {
        var bytes:ByteArray = new file;
        return XML(bytes.readUTFBytes(bytes.length));
    }

奇妙なことに、最初の 2 つのレベルは問題なく動作し、3 番目以降はエラーが発生します。

これは、レベルを変更するために使用するコードです。

if (GlobalVar.currentLevel[1] != GlobalVar.maxLevelsInSet)
{
            LevelLists.toLevel(GlobalVar.currentLevel[0], GlobalVar.currentLevel[1] + 1);
}

ogmo ファイル (LevelBase.as 内) を読み取るコード:

public function LevelBase(levelFile:Class)
{

        levelData = FP.getXML(levelFile); //Parse the .oel file and give data to levelData

私はかなり単純な間違ったことをしていると思いますか?どんな助けでも大歓迎です。乾杯 :)

4

1 に答える 1

0

さて、GlobalVar が何であるか、または currentLevel が何であるかはわかりませんが、最後に数字を追加し、追加していないコメントから、GlobalVar.currentLevel[1] は文字列のように見えます。したがって、値を追加するには、最初に int または Number にキャストしてから操作を行います。

于 2013-03-24T15:37:19.223 に答える