我一直在寻找一段时间.. 是否可以在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
答案 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获取当前帧名称...呃! :)