Flash 将栅格中的对象平铺为3
我想将一组对象放入网格中。我知道代码很简单,但不知何故,我没有得到我想要的 代码:Flash 将栅格中的对象平铺为3,flash,actionscript-3,grid,air,tile,Flash,Actionscript 3,Grid,Air,Tile,我想将一组对象放入网格中。我知道代码很简单,但不知何故,我没有得到我想要的 代码: const PADDING:Number=10: const COL:Number=Math.floor(Math.sqrt(tiles.length)); const ROW:Number=Math.floor(Math.sqrt(tiles.length)); 对于(变量i:int=0;i
const PADDING:Number=10:
const COL:Number=Math.floor(Math.sqrt(tiles.length));
const ROW:Number=Math.floor(Math.sqrt(tiles.length));
对于(变量i:int=0;i
注:
数组在别处声明为公共变量
这是我正在构建的游戏引擎的一部分,因此我希望它尽可能灵活
-瓷砖正在读取XML文件的属性。但我不想使用XML硬编码瓷砖的位置
提前感谢您的帮助。如果您需要更多说明,请告诉我。我建议您研究模运算符,而不是嵌套循环 这篇博文概述了如何做到这一点: 使用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);
}
var列:int=int(Math.sqrt(tiles.length));
变量填充:数字=10;
for(变量i:int;i
我建议研究模运算符,而不是嵌套循环
这篇博文概述了如何做到这一点:
使用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);
}
var列:int=int(Math.sqrt(tiles.length));
变量填充:数字=10;
for(变量i:int;i
而不是使用Math.floor
,只需将其转换为更快的值即可。例如var COLUMNS:int=int(Math.sqrt(tiles.length));
此外,我还保留了COLUMNS
或ROWS
变量(在XML中),因为在当前示例中,它只允许方形映射,这不是很灵活:)例如,var列:int=int(tiles.length/行)
对这两个帐户都很好。更新示例。为了简单起见,我只是更新示例以使用强制转换,因为其余部分解决了OP的原始问题。但我确实同意,通过XML将列计数保持在外部有更好的体系结构意义。与其使用Math.floor
,不如使用更快的强制转换。例如 var COLUMNS:int=int(Math.sqrt(tiles.length));
此外,我还保留了COLUMNS
或ROWS
变量(在XML中),因为在您当前的示例中,它只允许方形映射,这不是很灵活:)例如var COLUMNS:int=int(tiles.length/ROWS)代码>两个帐户的通话都很好。更新示例。为了简单起见,我只是更新示例以使用casting,因为其余部分解决了OP的原始问题。但我同意,通过XML将列计数保持在外部有更好的体系结构意义。