前回までは画面に描画する方法をご紹介しました。単に表示するだけではつまらないので,今回はマウスに反応するFlashを作りながら,Flashのイベント処理を理解していきましょう。
Flashでイベントを扱う方法は,HTMLのDOMイベントとほとんど同じです。DOMイベントをご存知の方にとっては理解しやすい内容かもしれません。
クリックイベントを拾う
さっそくシンプルな例から進めていきましょう。クリックした場所にランダムな色で円を表示するFlashです。
package {
import flash.display.Sprite;
import flash.events.MouseEvent;
public class ClickTest extends Sprite {
public function ClickTest():void {
// クリックイベントを監視する
stage.addEventListener("click", clickHandler);
}
private function clickHandler(event:MouseEvent):void {
// 円を作成
var s:Sprite = new Sprite();
s.graphics.beginFill(Math.random() * 0x1000000);
s.graphics.drawCircle(0, 0, 10);
s.graphics.endFill();
addChild(s);
// 円をクリックされた位置に移動
s.x = event.stageX;
s.y = event.stageY;
}
}
}
ClickTest.asとして保存して,コンパイルします。
mxmlc ClickTest.as
次のようなFlashができあがります。最初は何も表示されていませんが,クリックした位置に円が表示されます。
背後で飛んでいるイベント
マウスやキーボードからの入力があると,Flash Playerは入力を行った対象の表示オブジェクトに対してイベントを送信します。
例えば,マウスが移動した場合には,マウスのすぐ下の表示オブジェクトに対して,「座標(5,10)にマウスが動いた」といったイベントが送信されます。他にも,キーボードが押されたり,マウスホイールが回されたりするたびに,イベントが送られています。
このように,ユーザーから何らかのアクションがあるたびに,背後では無数のイベントが送信されているのです。これらのイベントを検知するには,表示オブジェクトのaddEventListener()メソッドを利用します。
addEventListenerでイベントハンドラを登録
addEventListener()メソッドは次のようにして使います。
この例では,次の意味になります。
- stageで
- clickイベントが発生したら
- clickHandler関数を呼んでね
stageというのは,Flash全体を表す表示オブジェクトです。Flash全体で発生するイベントを監視したい場合には,stageを監視対象とするのが簡単でよいでしょう。
Stageオブジェクトで監視できるイベントの種類については,Flex3リファレンスガイドStageクラスのイベントの項目をご覧ください。ここでは,「イベントの種類」としてclickを指定しています。clickイベントは,マウスがクリックされたときに送信されるイベントです。
以上より,ステージ上でマウスがクリックされると,clickHandler()が呼ばれることがわかります。

