2013-06-06 37 views
0

我正在为我制作的动画创建一个木偶装备。我创建了两个从MovieClip类继承的自定义类。一个是我正面向摄像机进行动画制作的头部,另一个是同一个头部的3/4视图。我修改这两个构造函数添加一个事件侦听器的MovieClip出现后调用函数facRig这有助于我通过调用其他功能,如moveEyes(), moveMouth()等动画头Actionscript 3代码一帧延迟

public function _F__MichaelFULLHEAD() { 
    super(); 
    faceRig("OverLoad"); //<--bug workaround 
    this.gotoAndPlay(MovieClip(root).currentFrame); //Sync movieclips with timeline 
    addEventListener(Event.ENTER_FRAME,faceRig); 
} 

但是,函数总是被称为一帧在时间轴上。这种延迟使得动画变得不可能,因为我必须不断地在前视图和3/4视图之间切换(我通过在时间线中创建新的关键帧并从库中拖出符号来切换)。每次切换时都会有一帧,嘴巴不说话,眼睛也不动。

“bug解决方法”有点解决了这个问题。现在,任何一个头部出现在舞台上时,立即开始动画,但如果从前视图切换到3/4视图回到前视图,则前视图会再次延迟。

我怀疑这可能是因为构造函数不会再次所以我尝试通过命名并frontHead1frontHead2在对象的属性框,使独特的头的每个实例上运行,但它并没有帮助的。

回答

0

我已经找到了答案,以我自己的问题:这违背

public function _F__MichaelFULLHEAD() { 
    super(); 
    //this.gotoAndPlay(MovieClip(root).currentFrame); << Moved this to inside faceRig 
    addEventListener(Event.ENTER_FRAME,faceRig); 
    addEventListener(Event.ADDED,faceRig); 
} 

显然Event.ADDED运行之前Event.ENTER_FRAME什么,我想我知道如何Event.ENTER_FRAME工作。现在一切都按原样进行。