as2动态添加函数到onEnterFrame函数

时间:2012-08-24 10:11:25

标签: flash actionscript-2

我现在正在研究一些功能,它可以创建几乎任何我想象的图形或特殊效果(授予我一个或两个基本movieClip)并且我遇到了一个问题。我需要能够根据传递给GraphicEffect函数行为对象的参数向函数movieClip添加函数。是否有一种有效的方法可以将新函数(如旋转,增长,收缩等)添加到已存在的onEnterFrame函数中而不将if语句放在其中?

2 个答案:

答案 0 :(得分:2)

是的,有办法。

我不确定你的行为对象是如何设置的,但假设它类似于{A:spin,B:grow,C:fade},你可以为你的效果动画片段添加一些功能(我'我只是使用以下代码样式称它为'fx':

   fx.TempA=fx.onEnterFrame;
   function NewA(){fx.TempA();behaviors.A(fx);};
   fx.onEnterFrame=function(){NewA();};   
   fx.TempB=fx.onEnterFrame;
   function NewB(){fx.TempB();behaviors.B(fx);};
   fx.onEnterFrame=function(){NewB();};   
   fx.TempC=fx.onEnterFrame;
   function NewC(){fx.TempC();behaviors.C(fx);};
   fx.onEnterFrame=function(){NewC();};

答案 1 :(得分:0)

另一种方式

mcFX.enterFrameFunctions = [];

mcFX.onEnterFrame = function(){
    for(var i in this.enterFrameFunctions) this.enterFrameFunctions[i]();
}

function a():Void {
    trace("a called");
}

function b():Void {
    trace("b called");
}

function c():Void {
    trace("c called");
}

mcFX.enterFrameFunctions.push(a, b);