2011-01-06 10 views
1

Ich suche nach einer alternativen Möglichkeit, eine Reihe von Objekten zu positionieren.alternative Möglichkeit zum Positionieren von Objekten

Hier ist mein 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, was ich will, ist, dass die Objekte (ordercontainer) meinen Movieclip in 2 collumns hinzugefügt werden, so 1 links, 1 rechts, die y-Position nach unten bewegen zu unterhalb der 2 habe ich gerade hinzugefügt und wiederhole es. bis ich 3 2-Spalten unter einander bekomme, wenn es das erreicht, sollte die yPosition auf den Anfang zurückgesetzt werden und die xPosition sollte nach rechts bewegen, damit ich wieder eine 2-Spalte erstellen kann, wieder auf 3 2- Spalten, setze die yPositon erneut und wiederhole, bis alle meine Objekte hinzugefügt sind, die Anzahl der Objekte ist variabel, so dass die Berechnung flexibel sein sollte. Es funktioniert mit dem Code, den ich habe, aber ich habe das Gefühl, dass ich es wieder zu kompliziert mache.

Sie werden sehen, dass die xPosition addiert (tieller * 8), dies ist nur, weil meine allignment leicht diagonal auf der yPosition sein sollte.

Es ist auch ein Tween an einer Schaltfläche angehängt, wodurch alle Objekte nach links verschoben werden, so dass die nächste Spalte sichtbar ist (das funktioniert nicht sehr gut, du weißt nicht warum).

so dass es Summ bis es weitergehen sollte:

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

Zahlen für den Auftrag sind die Objekte hinzugefügt werden.

Antwort

0

Hier ist eine Lösung. Angenommen, Sie haben ein Array von MovieClips namens 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; 
} 
Verwandte Themen