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 回答