补间多个对象,只调用一次完成

时间:2016-01-29 14:50:10

标签: actionscript-3 flash tweenmax

我正在补充数组中的多个项目。但是我希望onComplete只被调用一次。有没有办法把它写得更具可读性?

for (var i : int = 0; i < _cardsToRollOut.length; i++)
{   
            var wCard : TacticCard = _cardsToRollOut[i];

            if (doItOnce) TweenMax.to(wCard, 0.5, { delay:1, rotation:firstRotation + 0.4 * i} );
            else
            {
                doItOnce = true;
                TweenMax.to(wCard, 0.5, { delay:1, rotation:firstRotation + 0.4 * i, onComplete:updateCounters } ); 
            }
}

提前谢谢!

2 个答案:

答案 0 :(得分:3)

您可以使用Timeline代替:

var timeline:TimelineLite = new TimelineLite({onComplete: updateCounters});

for (var i : int = 0; i < _cardsToRollOut.length; i++)
{   
    var wCard : TacticCard = _cardsToRollOut[i];
    timeline.to(wCard, 0.5, { delay:1, rotation:firstRotation + 0.4 * i} , 0);
}

答案 1 :(得分:1)

这是一种常见的情况,并且有很多方法可以做到这一点。其中之一:

for (var i : int = 0; i < _cardsToRollOut.length; i++)
{   
        var wCard : TacticCard = _cardsToRollOut[i];
        var properties:Object = {};
        properties["delay"] = 1;
        properties["rotation"] = firstRotation + 0.4 * i;
        if(i == _cardsToRollOut.length - 1)
        {
            properties["onComplete"] = updateCounters;
        }
        TweenMax.to(wCard, 0.5, properties );             
}
相关问题