0

ここには非常に複雑な問題があります。どんな助けでも大歓迎です。まず、このチュートリアルを使用してこれをすべて行います : http://www.emanueleferonato.com/2007/05/21/how-to-load-levels-in-a-flash-tile-based-game/つまり、チュートリアルのコードは AS2 ですが、AIR 用にデバッグできるようにするために、AS3 に変換する必要があります。したがって、ここでの主な問題は、AS2 でメソッドを実行し、すべて同じ方法で AS3 で実行することです。 . 私たちが基本的にやろうとしているのは、配列を使用してコードそのものからレベルを構築するための非常にスマートなシステムを実装しようとしていることです (チュートリアルを参照してください)。各配列の整数値に応じて、異なる型を取得します。ブロックと空のブロックの。AS2 コードは次のとおりです。

 level = new Array();
 level[0] = new Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1);
 level[1] = new Array(2, 2, 2, 2, 2, 2, 2, 2, 2, 2);
 level[2] = new Array(3, 3, 3, 3, 3, 3, 3, 3, 3, 3);
 for (y = 0; y <= 2; y++) {
     for (x = 0; x <= 9; x++) {
         place_brick = attachMovie("brick", "brick_" + _root.getNextHighestDepth(),
         _root.getNextHighestDepth(), {
             _x: x * 50,
             _y: y * 15
         });
         place_brick.gotoAndStop(level[y][x]);
     }
 }

ご覧のとおり、ブリック クラスがあり、さまざまなタイルがさまざまなフレームによってインデックス化されています。int 値に応じて、特定の結果が得られます。これは AS3 では機能しません。AS3 コードは次のとおりです。

var level: Array = new Array();
var max: int = 0;
var min: int = 0;
level[0] = new Array(1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0);
level[1] = new Array(0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1);
level[2] = new Array(1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 1);
level[3] = new Array(1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1);
level[4] = new Array(1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
level[5] = new Array(1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1);
level[6] = new Array(1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 1);
level[7] = new Array(1, 0, 1, 1, 0, 0, 0, 1, 0, 1, 0, 1);
level[8] = new Array(1, 0, 0, 1, 0, 1, 1, 1, 0, 1, 0, 1);
level[9] = new Array(1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1);
level[10] = new Array(0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1);
for (y = 0; y <= 10; y++) {
    for (x = 0; x <= 11; x++) {
        if (level[y][x] == 1) {
            var brickik: brick = new brick();
            addChild(brickik);
            max += 80;
            this.brickik.x += max;
        }
        if (level[y][x] == 0) {
            max += 80;
        }
    }
}

私たちが抱えている問題は、AS2 で行われているように、このすべてをプログラミングするスマートな方法を見つけることです。配列を使用するだけで、あらゆる種類の好きな場所にタイルを配置できるように、AS3 でこれを実装するにはどうすればよいでしょうか。

4

1 に答える 1

0

AS3 では、for ループは次のようになります。

for (var y:int = 0; y <= 10; y++) {
for (var x:int = 0; x <= 11; x++) {

また、brickikx などの前に「this」について言及する必要はありません。

それが役立つかどうかはわかりません

于 2013-08-11T20:15:30.177 に答える