我想将矢量/数组中的某些对象排列成网格
目前,我知道如何在创建对象期间执行此操作。
这是我创建的网格功能:
function ArrangeInGrid(uiRow:uint, uiCol:uint, iOffsetX:int, iOffsetY:int):void
{
for(var i:uint = 0; i < uiRow; ++i)
{
for(var j:uint = 0; j < uiCol; ++j)
{
var card:MovieClip = new MovieClip();
card.x += iOffsetX + i * card.width;
card.y += iOffsetY + j * card.height;
stage.addChild(card);
}
}
}
现在我希望能够应用将数组/向量中的对象排列到网格中的相同逻辑,我该怎么做?
或者建议一种更有效的方法(如果有的话)。
注意:
我希望网格可以灵活设置多少行和列。
我正在使用的矢量中已经有卡片。
我不能把卡片按照我手动创建卡片的方式推送到卡片中。
如果您需要更多信息,请与我们联系。
谢谢。
答案 0 :(得分:1)
hx3ds(以前称为as3ds)附带了几个MultiDimensional结构,这些结构非常适合并针对网格类型数据进行优化(例如平铺贴图)。对Full source code is also avaliable these structures PDF你应该对引擎底下发生的事情感兴趣,并且有一个{{3}}可以很好地介绍图书馆。
答案 1 :(得分:0)
假设你有一个包含uiRow x uiCol元素的一维数组。
function ArrangeInGrid(cards:Vector.<MovieClip>, uiRow:uint, uiCol:uint, iOffsetX:int, iOffsetY:int):void
{
var arrayIndex:uint;
for(var i:uint = 0; i < uiRow; ++i)
{
for(var j:uint = 0; j < uiCol; ++j)
{
var card:MovieClip = cards[arrayIndex++];
card.x += iOffsetX + i * card.width;
card.y += iOffsetY + j * card.height;
stage.addChild(card);
}
}
}