いまさらですが、as3.0のイベント設定に使用されているaddEventListenerをas2.0でも使用する方法を紹介します。
addEventListenerはEventDispatcherクラスのメソッドで、as3.0の場合MovieClipクラスはEventDispatcherクラスを継承しているのでaddEventListenerを使うことができるのですが、as2.0では継承していないためデフォルトでは使用できません。EventDispatcherクラスに関する情報があまり出回ってなかったので、自分の場合は習得に手間取りましたが、覚えるべきことは多くないです。
下記のソースはclickイベントをムービークリップに実装してるだけです。
このソースの肝となる部分は最初の2行だけですね。「mx.events.LowLevelEvents;」の部分で
・mouseMove
・mouseDown
・mouseUp
・mouseOver
・mouseOut
・mouseDownSomewhere
・mouseUpSomewhere
以上のイベントが使えるようになります。(UIEventDispatcherクラス単体ではload、unload、keyDown、keyUpイベントしか使えません。ちなみに、UIEventDispatcherクラスはEventDispatcherクラスのサブクラスです。)
「mx.events.UIEventDispatcher.initialize(this);」の部分でムービークリップにEventDispatcherクラスの機能を追加しています。「mx.events.LowLevelEvents;」は「mx.events.UIEventDispatcher.initialize(this);」の前に書く必要がありますので注意。イベントの種類は違いますが、これでas3.0のようにイベントを設定できるようになります。
//ムービークリップ1フレーム目に記述
mx.events.LowLevelEvents;
mx.events.UIEventDispatcher.initialize(this);
addEventListener("mouseDown",this);
addEventListener("mouseUp",this);
addEventListener("mouseOut",this);
function click(evt){
trace(evt.type);
}
function mouseDown(evt){
addEventListener("click",this);
}
function mouseUp(evt){
dispatchEvent({type:"click"});
}
function mouseOut(evt){
removeEventListener("click",this);
}
コメント (1)
Googleでここに行き着きました。
UIコンポーネントのイベントが取れなくてaddListenerとか、あらゆる苦労をしても、できなかったのですが助かりました。
投稿者: ライト | 2008年10月02日 13:45