as2.0でas3.0的イベント実装方法
いまさらですが、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);
}

ポケットモンスターが登場してからかれこれ10年経つというわけなので
個人的に興味を引いたのが、オンラインゲームのように複数のユーザーと画面を共有できる仕組み。基本的には、クライアント単体で処理しているのだが、一部コンテンツでは複数のユーザーが画面を共有する。しかし、この仕組みには参加人数が多くなるとサーバー側の処理が追いつかなくなる(画面を共有するので常にサーバーにアクセスする必要がある為)という欠点がある。このサイトではその欠点を逆に利用し予約システムを採用している。ユーザーは任意にコンテンツを予約し、時間が来たらそのコンテンツに参加できるのである。そうすることでアクセスが分散されサーバーの負担が減るというわけだ。ちなみに予約の待ち時間というのがリアルで、込み具合によっては数時間待つことになる。待っている間に他のコンテンツを見たりして時間をつぶすのも楽しい。また、予約はサイトを閉じても有効なので、別のサイトに行くことも可能だ。
