在Grid AS3中平铺对象

Dav*_*ong 1 air flash grid actionscript-3 tile

我想将一个对象数组放入网格中.我知道代码很简单,但不知怎的,我没有得到我想要的东西.

码:

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;
  }
}
Run Code Online (Sandbox Code Playgroud)

注意:
- 数组在其他地方被声明为公共变量
- 这是我正在构建的游戏引擎的一部分所以我希望它尽可能灵活
- 瓦片为XML文件读取它们的属性.但我不想使用XML来硬编码磁贴的位置.

在此先感谢您的帮助.如果您需要进一步澄清,请与我们联系.

mar*_*ate 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);
}
Run Code Online (Sandbox Code Playgroud)