ActionScript 2でfpsごとの処理をする時は onEnterFrame を使います。
問題はonEnterFrame が MovieClip でしか有効にならないことと、たくさんの MovieClip インスタンスで onEnterFrame を使うと実行スピードが落ちてしまい、コマ落ち状態に陥りやすくなること。
mx.transitions.OnEnterFrameBeacon を使えば MovieClip を継承していないクラス内でも onEnterFrame が使えるようになります。
mx.transitions.OnEnterFrameBeacon は _rootの深度:9876へcreateEmptyMovieClipで空のMovieClipを作成し、その MovieClipのonEnterFrame 関数から_global.MovieClip.broadcastMessage ("onEnterFrame")を実行します。
import mx.transitions.OnEnterFrameBeacon; class BeaconTest { function BeaconTest () { OnEnterFrameBeacon.init(); MovieClip.addListener(this); } private function onEnterFrame () { // do something } } |
onEnterFrame が必要なインスタンスは MovieClip.addListener(listener:Object) する。
var listener:Object = {}; listener.onEnterFrame = function () { }; MovieClip.addListener(listener); |
mx.events.EventDispatcher と組み合わせて使う。
などで、複数の onEnterFrame 関数を作らずにたったひとつの onEnterFrame で処理することが可能になります。
