2

私は現在、配列にロードされた一連の画像を使用してタイルマップを作成する作業を行っています。

次のようなオブジェクトとしてタイルを定義しました。

function tile(gfx){
this.tile = gfx;

this.drawSelf = function(x,y)
this.tile.x = x;
this.tile.y = y;
}

次に、デバッガーを介して正しく表示されるいくつかのタイル オブジェクトで配列を埋めました。

このコードを使用して画像の作成を開始すると、次のようになります。

for (var x = 0; x < mapArray.length; x++){
xN = 183 + (50*x);
mapArray[x].drawSelf(xN, 134);
gameStage.addChild(mapArray[x].tile);
mapArray[x].tile.visible = true;
}

問題は、配列内のすべての「オブジェクト」が同じ x 座標と y 座標を受け取ることです。したがって、配列内のすべてのオブジェクトが相互に参照していると思われます。

私がやろうとしているのは、タイルの 20x10 マップを作成することです。そして、各タイルを 1 つのオブジェクトとして参照できるようにする必要があります。

私が意味をなさない場合は叫んでください。

4

1 に答える 1

0

このようなすべてのタイルを作成する場合:

var gfx = new ...
for (...) {
    mapArray[x].tile = new tile(gfx);
}

次に、それらすべてが同じgfxオブジェクトを共有します。

次のように初期化を変更する必要があります。

for (...) {
    var gfx = new ...
    mapArray[x].tile = new tile(gfx);
}
于 2013-03-12T14:29:08.330 に答える