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
で処理することが可能になります。