0

我试图实现的目标非常简单。我在舞台上有一个 MC,我试图在不同的 X 坐标之间进行补间。

我已经设置了四个 TweenLite.to 序列,但是由于某种奇怪的原因,只有一个被触发 - 我做错了什么?

TweenLite.to(slider.mc_slider,1,{x:_returnXPos(95), ease:menuEasing});
TweenLite.to(slider.mc_slider,1,{delay: 1, x:_returnXPos(35), ease:menuEasing});
TweenLite.to(slider.mc_slider,1,{delay: 2, x:_returnXPos(50), ease:menuEasing});

//Function which returns x coordinate of Sliderbar - related to defined percentage
function _returnXPos(definedPercentage:Number):Number {
    var defineWidth:Number = slider.mc_background.width * (definedPercentage/100);
    return defineWidth;
}
4

3 回答 3

4

问题可能是您必须确保使用OverwriteManager正确的设置,否则它可能只会覆盖您的补间,无论延迟如何,请参阅:http ://www.greensock.com/overwritemanager/

于 2011-06-01T11:32:02.793 回答
1

除了 dain 的建议之外,您可能还想查看TimelineLight

于 2011-06-01T11:33:53.237 回答
0

查看代码(不是在我可以测试的机器上)只有最后一个补间正在运行。如果您希望它们按顺序运行,您需要指定一个回调函数。不幸的是,您不能使用匿名函数。

TweenLite.to(slider.mc_slider,1,{x:_returnXPos(95),ease:menuEasing,onComplete:nextTween,onCompleteParams:[35]});

function nextTween(newPos:int)
{
    TweenLite.to(slider.mc_slider,1,{x:_returnXPos(newPos),ease:menuEasing,onComplete:finalTween,onCompleteParams:[50]});
}

function finalTween(newPos:int)
{
    TweenLite.to(slider.mc_slider,1,{x:_returnXPos(newPos),ease:menuEasing,onComplete:finalTween,onCompleteParams:[50]});
}

不是最佳答案,因为您重复代码三次。当我拿到一台电脑时,我可以在上面进行测试,我会将代码重构为一个函数。

于 2011-06-01T11:38:30.850 回答