2009.11.07
14:34
author: taikiken
1件のコメント
ActionScript 3 + Flash Player 10 の話題が旬なことは承知していますが、ActionScript 2 なネタ。
■ mx パッケージ 使いまくり
Flash CS3 以前から添付されてたけどなぜか undocument な Adobe 作成の mx パッケージ。
今では mx パッケージは Flex Builder 用のパッケージだけど、Flash では ActionScript 2 用のパッケージとして添付されています。
このライブラリが結構使えるんだ。
mx.events.EventDispatcher
ActionScript 2 でも addEventListener
ができるスグレもの。
removeEventListener
, dispatchEvent
と ActionScript 3 と同名の関数が用意されてる。
使用方法はビルトインされている ActionScript 3 とはチョイ違う。
import mx.events.EventDispatcher;
var dispatcher:Object = {};
EventDispatcher.initialize (dispatcher); |
import mx.events.EventDispatcher;
var dispatcher:Object = {};
EventDispatcher.initialize (dispatcher);
EventDispatcher.initialize
の引数に設定した空の Object に EventDispatcher から関数が移植(?)される。
変数 _level0.dispatcher = [オブジェクト #4, クラス 'Object'] {
addEventListener:[関数 'addEventListener'],
removeEventListener:[関数 'removeEventListener'],
dispatchEvent:[関数 'dispatchEvent'],
dispatchQueue:[関数 'dispatchQueue']
} |
変数 _level0.dispatcher = [オブジェクト #4, クラス 'Object'] {
addEventListener:[関数 'addEventListener'],
removeEventListener:[関数 'removeEventListener'],
dispatchEvent:[関数 'dispatchEvent'],
dispatchQueue:[関数 'dispatchQueue']
}
dispatchQueue
は EventDispatcher クラス内部で使われる関数のようです。
●使い方
// リスナー(Object)作成
// イベントハンドラ(Function)作成
var listener1:Object = {};
listener.onPress = function (args:Object) {
trace("listene press type="+args.type+" value="+args.value);
}
// イベントにリスナー設定
dispatcher.addEventListener("onPress", listener);
// イベント発生時にdispatchEvent実行
button_mc.onPress = function () {
dispatcher.dispatchEvent({type:"onPress", value:"some value"});
} |
// リスナー(Object)作成
// イベントハンドラ(Function)作成
var listener1:Object = {};
listener.onPress = function (args:Object) {
trace("listene press type="+args.type+" value="+args.value);
}
// イベントにリスナー設定
dispatcher.addEventListener("onPress", listener);
// イベント発生時にdispatchEvent実行
button_mc.onPress = function () {
dispatcher.dispatchEvent({type:"onPress", value:"some value"});
}
dispatchEvent
の引数にObjectを設定。
引数のObjectにtypeキーがあることが必須。
typeの値はイベント名(String)。
ActionScript 3 とは違い続けて任意の Key:Value をいくつでも設定可能。
*ActionScript 3 でもイベントハンドラに任意の値の設定はできます。めんどくさいけど・・・
ActionScript 2 でこんな回りくどいことをしてまで addEventListener
を実装するかは意見もあるだろうとは思いますが、コードメンテナンスの上でお薦めです。
まぁ、Flash Player 10 対応のコンテンツを作る現在ではムダな知識のひとつですけどね。 😉
でもたまにいるんだよね、今でも Flash Plaer 8 対応で作れって言う人。