开发者

alternative way for positioning objects

I'm looking for an alternative way to position a bunch of objects.

Here is my code:

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});
                }
            }

Basicly what i want is that the objects(ordercontainer) are added to my movieclip in 2 collumns, so 1 left, 1 right, move the y-position down to below the 2 i just added and repeat. till i get 3 2-collumns under eachother, when it reaches this, the yPosition should get reset to the top and the xPosition should move to the right so i can create a 2-column again next to it, again to 3 2-collumns, reset the yPositon again and repeat till all my objects are added, the amoun开发者_如何学Got of objects is variable so the calculation should be flexible. Its working with the code i have but i have a feeling that i am making it way to complicated again.

You will see that the xPosition adds (teller*8) this is just because my allignment should be slightly diagonal on the yPosition.

There is also a tween attached to a button wich makes all the objects move to the left so the next collumn is visible(this isnt working very well thou, no idea why).

so to summ it up it should go like this:

**(1)**     **(2)**    **(7)**     **(8)**
**(3)**     **(4)**    **(9)**     **(10)**
**(5)**     **(6)**    **(11)**     **(12)**

numbers are for the order the objects are added.


Here's one solution. Suppose you have an array of movieclips called 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;
}
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜