2016-11-10 28 views
1

嘿大家所以我有一個叫做aPlanetArray的電影剪輯對象的數組,我試圖完成的是讓數組中的所有對象向下移動到某個位置,然後停止使用tweenLite或任何其他方法來完成此操作。我知道我可以用y+=2做到這一點,但是我希望所有的物體能夠像使用Tweenlite一樣迅速地在屏幕中快速移動,並保持它們的距離比。如何tweenLite數組中的所有對象並保持距離位置?

這裏是我讓他們安裝時添加到舞臺:

//Numbers 
     xSpacing = 100; 
     ySpacing = 180; 
     startPoint = new Point((stage.stageWidth/2), (stage.stageHeight/2)); 

private function addOuterPlanets():void 
    { 
     for (var i:int = 0; i < nPlanets; i++) 
     { 
      outerPlanets = new mcOuterPlanets(); 
      outerPlanets.x = startPoint.x + (xSpacing * i); 
      outerPlanets.y = startPoint.y - (ySpacing * i); 
      stage.addChild(outerPlanets); 
      aPlanetArray.push(outerPlanets); 

     } 
    } 

,當我吐溫他們,我現在用的這個TweenLite的功能:

for each(var allPlanets:mcOuterPlanets in aPlanetArray) 
       { 
        TweenLite.to(allPlanets, 5.0, {y:550, ease:Back.easeOut}); 
       } 

這完美的作品,但在所有的對象陣列排隊在一起,不要保持彼此間的距離。任何想法將不勝感激謝謝!

+1

爲了消除需要循環和移動每一個,你可以將它們全部放在父容器中,然後移動該容器。 –

+0

是的,看到這就是我想要做的。從來沒有嘗試過,所以只是採取這種方法。所以,只需創建一個空的影片剪輯並將其中的對象添加到它的權利?我現在試着撥弄它 – Nathan

回答

2

最簡單的方法是將所有行星放在父容器中,然後移動容器而不是行星。

var planetContainer:Sprite = new Sprite(); 

function addPlanetsToContainer():void{ 
    for (var i:int = 0; i < aPlanetArray.length; i++){ 
     planetContainer.addChild(aPlanetArray[i]); 
    } 
} 

現在你可以做你補上planetContainer

現在把字符在一個星球上,你可以做

planet.addChild(character); 

character.x = planet.x + planet.parent.x; 
character.y = planet.y + planet.parent.y; 
+1

哦好吧我明白你的意思了。這工作完美,解決了這個問題,一旦我這樣做以及stage.addChild(planetContainer);如果你不介意的話,我還有一個問題,現在回頭看看你幫助我解決行星碰撞的最後一個問題,我現在必須參考什麼才能讓角色留在正確的星球上? – Nathan

+0

是的,這是下一個任務。我可能會這樣做的方式是將角色作爲一個孩子添加到地球上,但您也可以按照自己的方式進行操作。你只需要考慮這樣一個事實,即這個行星並沒有完全放在舞臺的X/Y座標上。它的X位置是其聲明的X值和其父母X值(y相同)的總和。 –

+0

所以你可以做一些像character.x = planet.x + planet.parent.x(和y相同的東西) –

相關問題