定位对象的替代方法

时间:2011-01-06 09:30:55

标签: actionscript-3

我正在寻找另一种方法来定位一堆物体。

这是我的代码:

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)**

数字用于添加对象的顺序。

1 个答案:

答案 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;
}