as3 ENTER_FRAMEフレーム再生イベント

一定の間隔でイベントを発生させたいときに、フレームレートに合わせて送出される enterFrame イベントを利用することができます。

フレームレートとは、[ドキュメントプロパティ]で設定されている値で、1秒間に何回画面を書き換えるの頻度を表す数値で、単位は fps( frame per second )です。フレームレートが 30fps の場合、1 秒間に 30 回描画が行なわれます。デフォルト値では 12fps です。
つまり、フレームレートが 12fps であれば enterFrame イベントが 1 秒間に 12 回送出されていることになります。

enterFrame イベントを利用すれば、スムーズなアニメーションを行うことができます。

下記の例は、MovieClip クラスのインスタンス rotation_mc が enterFrame イベントが送出される度に10 度回転します。

 rotation_mc.addEventListener(Event.ENTER_FRAME, enterFrameHandler);

 function enterFrameHandler(event:Event):void {
     rotation_mc.rotation += 10;
 }

注意が必要なのは、 enterFrame イベントを設定した場合、ムービーが再生している間、送出され続けるということです。これはメモリ管理や CPU の負荷管理から言ってもあまり良くありません。
enterFrame イベントが必要でなくなれば削除しておくことが望ましいでしょう。

リスナー関数を登録するときに、イベントを無効にしたい条件になったらremoveEventListenerでイベントを削除するように設定しておきます。

下記の例は、ムービー全体のダウンロードが、現在何パーセントまで完了しているかを enterFrame イベントを使って表示させています。

stop();
addEventListener(Event.ENTER_FRAME, loadCheker);

function loadCheker(event:Event):void {
    var percent:int = Math.ceil(loaderInfo.bytesLoaded / loaderInfo.bytesTotal * 100);
    percentField.text = percent + "%";

    if(percent >= 100){
        removeEventListener(Event.ENTER_FRAME, loadCheker);
        gotoAndPlay(2);
    }
}

行 1 : でムービーが 2 フレーム目に進まないように再生ヘッドを停止させています。

行 2 : で enterFrame イベントのリスナー関数を登録しています。

行 5 : では、int 型(整数値)の変数 percent を定義しています。
loaderInfo オブジェクトは、ロードされるファイルに関する情報を提供します。
loaderInfo.bytesLoaded プロパティは、ロードされたバイト数、 loaderInfo.bytesTotal プロパティは、ロードするムービーの総バイト数を表します。
loaderInfo.bytesLoaded / loaderInfo.bytesTotal * 100
は、現在何パーセントのデータの読み込みが完了しているかが求められます。
また、 Math.ceil() は、小数点以下を切り上げるメソッドです。

行 8 : の、if 文で完了に条件を設定しています。 percent の値が 100 以上になった場合、 enterFrame イベントを削除して、再生ヘッドを 2 フレーム目に移動させています。