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来硬编码磁贴的位置.
在此先感谢您的帮助.如果您需要进一步澄清,请与我们联系.
我建议调查模数运算符而不是嵌套循环.
这篇博客文章概述了如何做到这一点:
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)