2012-08-24 37 views
1

我正在处理一些事情,以创建几乎可以创建任何图形或特殊效果的功能(我可以想象得到(授予基础影片剪辑或两个基本剪影),并且已经遇到一个问题。我需要能够根据传递给GraphicEffect函数行为对象的参数将效果添加到效果movieClip。有没有一种有效的方法来添加新的函数,如旋转,增长,缩小等到一个已经存在的onEnterFrame函数,而没有if语句放在里面?as2将函数动态添加到onEnterFrame函数

回答

2

是的,有一种方法。

我不知道你如何设置你的行为对象,但假设它是类似于{A:spin,B:grow,C:fade}的类型,你可以为你的效果实现一个功能添加movieclip(I

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();}; 
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); 
:通过使用下面的代码风格“会叫它 'FX')