0

作成中のアニメーション用のパペット リグを作成しています。MovieClip クラスから継承する 2 つのカスタム クラスを作成しました。1 つはカメラの方を向いてアニメートしている頭で、もう 1 つは同じ頭の 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がタイムラインに表示された 1 フレーム後に常に呼び出されます。前面ビューと 3/4 ビューを常に切り替える必要があるため、この遅延によりアニメーション化が不可能になります (タイムラインで新しいキーフレームを作成し、ライブラリからシンボルをドラッグして切り替えます)。切り替えるたびに、口がしゃべらず、目が動かないフレームが 1 コマあります。

「バグの回避策」は問題を解決します。いずれかの頭が初めてステージに表示されると、すぐにアニメーションが開始されますが、正面図から 3/4 のビューに切り替えて正面図に戻ると、正面図が再び遅延します。

これは、コンストラクターが再度実行されないことが原因であると思われるため、ヘッドの各インスタンスに名前を付けてオブジェクトのプロパティ ボックスで一意にしようとしfrontHead1ましfrontHead2たが、まったく役に立ちませんでした。

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_FRAMEEvent.ENTER_FRAME

于 2013-06-07T01:27:13.287 に答える