我正在寻找另一种方法来定位一堆物体。
这是我的代码:
private var orderContainer:Sprite;
private var currentOrder:uint = 1;
private var orderArray:Array;
private var scroller:uint;
private var xPos:uint;
private var yPos:uint;
.....
xPos = 55;
yPos = 30;
if (currentOrder == 7){ winkelwagenContent.TestBtn.addEventListener(MouseEvent.CLICK, clickHandler);
scroller++;
xPos = 700*scroller;
yPos = 60;
teller = 1;
currentOrder = 1;
}
orderContainer.x = xPos;
orderContainer.y = yPos;
xPos+=270;
if( teller % 2 == 0){
if(scroller >0){
xPos = (700+(teller*8))*scroller;
}else{
xPos = 55+(teller*8);
}
yPos+=100;
}
teller++;
currentOrder++;
}
private function clickHandler(e:MouseEvent):void{
for each(var order:Object in orderArray){
TweenLite.to(order, .5,{x:order.x-60});
}
}
基本上我想要的是对象(ordercontainer)被添加到我的movieclip中的2个collumns中,所以1左,1右,将y位置向下移动到2我刚刚添加并重复。 直到我得到3个2-collumns,当它达到这个时,yPosition应该重置到顶部,xPosition应该向右移动,所以我可以在它旁边再次创建一个2列,再次到3个2-collumns ,重复yPositon并重复,直到我的所有对象都被添加,对象的数量是可变的,因此计算应该是灵活的。 它使用我的代码,但我有一种感觉,我正在让它再次复杂化。
你会看到xPosition添加(出纳员* 8)这只是因为我的对齐应该在yPosition上略微倾斜。
还有一个补间连接到一个按钮,使所有对象向左移动,以便下一个列可见(这不是很好,你不知道为什么)。
所以要总结它应该是这样的:
**(1)** **(2)** **(7)** **(8)**
**(3)** **(4)** **(9)** **(10)**
**(5)** **(6)** **(11)** **(12)**
数字用于添加对象的顺序。
答案 0 :(得分:0)
这是一个解决方案。假设你有一个名为objs的动画片段数组。
const colNum:int = 2;
const rowNum:int = 3;
var offset:int = 0;
while (objs.length)
{
for (var j:int=0; j<rowNum; j++)
{
for (var i:int = 0; i<colNum; i++)
{
if (objs.length)
{
var nextObj:MovieClip = objs.shift();
nextObj.x = (offset+i) * nextObj.width;
nextObj.y = j * nextObj.height;
}
}
}
offset+=colNum;
}