ここには非常に複雑な問題があります。どんな助けでも大歓迎です。まず、このチュートリアルを使用してこれをすべて行います : 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 でこれを実装するにはどうすればよいでしょうか。