0

我正在为我正在制作的动画创建一个木偶装置。我创建了两个继承自 MovieClip 类的自定义类。一个是我制作动画时面对相机的头部,另一个是同一个头部的 3/4 视图。我已经修改了两个构造函数以添加一个事件侦听器,该侦听器调用该函数,该函数通过调用其他函数(例如等facRig)来帮助我为头部设置动画。moveEyes(), moveMouth()

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

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

“错误解决方法”有点解决问题。现在第一次出现在舞台上时,它会立即开始动画,但如果我从前视图切换到 3/4 视图再切换回前视图,前视图会再次延迟。

我怀疑这可能是因为构造函数没有再次运行,所以我尝试通过命名它们frontHead1frontHead2对象的属性框中的每个实例来使头部的每个实例都是唯一的,但是它根本没有帮助。

4

1 回答 1

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工作方式相矛盾。现在一切正常。

于 2013-06-07T01:27:13.287 回答