1

オブジェクトの配列をグリッドに入れたい。コードが単純であることは知っていますが、どういうわけか私が望むものを得られません。

コード:

const PADDING:Number = 10:

const COL:Number = Math.floor(Math.sqrt(tiles.length);
const ROW:Number = Math.floor(Math.sqrt(tiles.length);

for(var i:int = 0; i< COL; i++)
{
  var tile:TileSprite = tiles[i];
  tile.x = i * tile.width + PADDING;

  for(var j:int = 0; j < ROW; j++)
  {
     tile.y = j * tile.height + PADDING;
  }
}

注:
- 配列はパブリック変数として他の場所で宣言されます
- これは私が構築しているゲーム エンジンの一部であるため、できるだけ柔軟にしたい
- XML ファイルのプロパティを読み取るタイル。しかし、タイルの位置をハード コードするために XML を使用したくありません。

よろしくお願いします。さらに明確にする必要がある場合はお知らせください。

4

1 に答える 1

5

ループをネストするのではなく、モジュラス演算子を調べることをお勧めします。

このブログ投稿では、その方法を概説しています。

http://www.davidpett.com/actionscript-3-dynamic-rows-and-columns/

David の例を出発点として使用すると、コードは次のようになります。

var COLUMNS:int = int(Math.sqrt(tiles.length));
var PADDING:Number = 10;

for(var i:int; i < tiles.length; i++)
{
    var tile:TileSprite = tiles[i];
    tile.x = (i % COLUMNS) * (tile.width + PADDING);
    tile.y = int(i / COLUMNS) * (tile.height + PADDING);
}
于 2011-04-08T09:17:32.803 に答える