as2: 2008年3月アーカイブ
AS3の EventDispatcher クラスをAS2でも使えるようにと思って作ったクラスです。
EventDispatcher クラス
Event クラス
サンプル用 fla ファイル
demo.fla
demo2.fla
willTriggerメソッドが、どうやって実装するか悩んだ(willTriggerの挙動自体いまいち把握してない)のでとりあえずほったらかしてます。
あと、mx.events.EventDispatcherを継承してますが、中身はまったく別物です。
ムービークリップに適応した場合、イベント通知がルートからたどっていくようになってます。(微妙ですが)
で、AS3的に「addEventListener("enterFrame", handler )」とかやりたいところですが、
元々AS2のMovieClipにそんな機能は実装されてないので、前のエントリーで書いた EventMediator クラスを使います。
こんな感じです。
EnterFrameBeaconクラスは、単純にenterFrameイベントを通知し続けるクラスです。
EventDispatcher クラス
Event クラス
サンプル用 fla ファイル
demo.fla
demo2.fla
willTriggerメソッドが、どうやって実装するか悩んだ(willTriggerの挙動自体いまいち把握してない)のでとりあえずほったらかしてます。
あと、mx.events.EventDispatcherを継承してますが、中身はまったく別物です。
ムービークリップに適応した場合、イベント通知がルートからたどっていくようになってます。(微妙ですが)
で、AS3的に「addEventListener("enterFrame", handler )」とかやりたいところですが、
元々AS2のMovieClipにそんな機能は実装されてないので、前のエントリーで書いた EventMediator クラスを使います。
こんな感じです。
import flash.events.EventDispatcher;
import flash.events.Event;
import com.seyself.events.EnterFrameBeacon;
import com.seyself.events.EventMediator;
EventDispatcher.initialize( MovieClip.prototype );
var madiator:EventMediator = new EventMediator( new EnterFrameBeacon() );
madiator.addEventListener( "enterFrame" , null );
madiator.member = [mc]; // ステージ上に配置してあるムービークリップ
mc.addEventListener( "enterFrame" , enterFrameHandler );
function enterFrameHandler( event:Event ):Void
{
trace(event.target);// _level0.mc
}
EnterFrameBeaconクラスは、単純にenterFrameイベントを通知し続けるクラスです。
AS3を使っててAS2に戻ると、何かと不便に感じることが多いです。
AS3とAS2に互換性が無いのが、今、一番厄介に感じます。
いずれ完全にAS3に移行したときのことを考えて、少しAS2にAS3らしさを取り入れたほうがいいのかな?なんて思ったりもしますが、それが正しいのか間違ってるのかはよくわかりません。
ただAS3からAS2にクラスを逆移植することがあるのですが、Eventクラスとか、デフォルトのクラスでよく使うものはAS2にもほしい。
誰か作ってないかなあ。と思う今日この頃。
あと、個人的にProxyクラスがAS2にもほしいけど実装の仕方がわからない。
flash.utils.Dictionary
AS3とAS2に互換性が無いのが、今、一番厄介に感じます。
いずれ完全にAS3に移行したときのことを考えて、少しAS2にAS3らしさを取り入れたほうがいいのかな?なんて思ったりもしますが、それが正しいのか間違ってるのかはよくわかりません。
ただAS3からAS2にクラスを逆移植することがあるのですが、Eventクラスとか、デフォルトのクラスでよく使うものはAS2にもほしい。
誰か作ってないかなあ。と思う今日この頃。
あと、個人的にProxyクラスがAS2にもほしいけど実装の仕方がわからない。
flash.utils.Dictionary
import flash.utils.Dictionary;
var dic:Dictionary = new Dictionary();
var a = {};
var b = {};
var c = {};
dic.add( a , 1 );
dic.add( b , 2 );
dic.add( c , b );
trace("length : "+dic.length);// output 3
trace("object a : "+dic.value(a));// output 1
trace("object b : "+dic.value(dic.value(c)));// output 2
dic.del(c);
trace("length : "+dic.length);// output 2
trace("has a : "+dic.has(a));// output true
trace("has b : "+dic.has(b));// output true
trace("has c : "+dic.has(c));// output false
