如何tweenLiteLite中的所有对象并保持距离位置?

时间:2016-11-10 05:46:11

标签: arrays actionscript-3 tweenmax tweenlite

大家好,所以我有一个名为aPlanetArray的Movie Clip Objects数组,我想要完成的是让数组中的所有对象向下移动到某个定位,然后停止使用tweenLite或任何其他方法这将实现这一目标。我知道我可以用y+=2做到这一点,但是我希望所有对象能够在使用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 :(得分: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;