multimedia design, Actionscript, Lingo, PHP, Perl, SQL
11月
7

Actionscript 2, mx ライブラリ使用メモ mx.events.EventDispatcher

Filed under: Actionscript2 | Tags: EventDispatcher, mx | 11月 7th, 2009
Post

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);

EventDispatcher.initialize の引数に設定した空の Object に EventDispatcher から関数が移植(?)される。

変数 _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"});
}

dispatchEvent の引数にObjectを設定。
引数のObjectにtypeキーがあることが必須。
typeの値はイベント名(String)。
Actionscript 3 とは違い続けて任意の Key:Value をいくつでも設定可能。

*Actionscript 3 でもイベントハンドラに任意の値の設定はできます。めんどくさいけど・・・

Actionscript 2 でこんな回りくどいことをしてまで addEventListener を実装するかは意見もあるだろうとは思いますが、コードメンテナンスの上でお薦めです。

まぁ、Flash Player 10 対応のコンテンツを作る現在ではムダな知識のひとつですけどね。 ;-)

でもたまにいるんだよね、今でも Flash Plaer 8 対応で作れって言う人。

Bookmark and Share

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <img localsrc="" alt=""> <pre lang="" line="" escaped="">