在OS3中将缓动函数作为变量传递

时间:2010-05-31 19:53:37

标签: flash actionscript-3

我一直在寻找一段时间.. 是否可以在AS3中将缓动函数作为变量传递?

例如

TweenLite.to(mcDelimiter, resizeTween, { x:(stageWidthHalf-(initStageWidthHalf-mcDelimiteri_X)), ease:Elastic.easeOut } );  

TweenLite.to(mcBody, resizeTween, { x:(stageWidthHalf-(initStageWidthHalf-mcBody_X)), ease:Elastic.easeOut } );

...现在,如果我在某个时候想要将“Elastic.easeOut”更改为其他内容,我将不得不在代码的多个部分更改它。 它可以这样做,所以我只是把它作为变量传递然后如果我想改变它,只在一个地方做它?

编辑:...也是, 可以为例如。 if(currentFrame == "FrameLabel")不知怎的? ..意思,我可以将currentFrame标签名称作为变量传递吗?

先谢谢你们,

的Andrej

2 个答案:

答案 0 :(得分:0)

您可以在ActionScript中传递对函数的引用,就像使用任何其他对象一样。例如(伪代码):

var equation:Function;
equation = Elastic.easeInOutSine;

TweenLite.to(mcDelimiter, resizeTween, { x:(stageWidthHalf-(initStageWidthHalf-mcDelimiteri_X)), ease: equation } );  

您需要做的就是创建一个变量来充当缓动函数的引用。您可以在另一个函数中包含对TweenLite的调用,并将缓动变量传递给它,如下所示:

public function doTween( equation:Function ):void 
{
     TweenLite.to(mcDelimiter, resizeTween, { x:(stageWidthHalf-(initStageWidthHalf-mcDelimiteri_X)), ease: equation } );  
}

答案 1 :(得分:0)

谢谢! 顺便说一句:如果其他人有同样的问题,使用“currentLabel”而不是currentFrame获取当前帧名称...呃! :)