2

ムービークリップに init() 関数を追加しようとしていますが、シーン 1 から関数を実行すると、ムービークリップに設定された変数がまだ定義されていません... ムービークリップがライブラリからステージにドラッグされました。

シーン1:

mc.init(null);

ビデオクリップ:

var _default = 5;

function init(num) {
     if(num == null) {
          trace(_default);
     } else {
          trace(num);
     }
}

これは、「5」ではなく「未定義」をトレースしています。この問題を解決する方法はありますか?

4

1 に答える 1

1

問題は、メイン タイムラインに直接配置されたコードは常に、ムービークリップに直接配置されたコードの前に実行されることです。

これを回避する方法は、最初にタイムラインと MovieClip の両方でそのコードの実行をフラッシュに終了させ、完了後にタイムラインから関数を呼び出すことです。

これを行う最も簡単な方法は、イベント リスナーを使用することです。

タイムライン:

addEventListener( Event.ENTER_FRAME, onEnterFrame );

function onEnterFrame( e:Event ):void {
    myObject.init(null);
    removeEventListener( Event.ENTER_FRAME, onEnterFrame );
}

そうすれば、タイムラインは、最初のフレームがムービークリップの init 関数を呼び出し始めるまで待機します。

于 2011-03-06T16:58:51.310 に答える