F-site のセミナーに行ってきました(1)
2007/11/11 18:30 - AS3.0
2007年11月10日に国立オリンピック記念青少年総合センターで実施された F-site セミナー「そろそろ…、ActionScript 3.0で行かナイト!」に行ってきました。
目当ては第3部、 野中文雄先生による「イベントを制する者、ActionScript 3.0 を制す」です
各種イベントのうちでも、とりわけ多用することの多いマウスイベントに的を絞った講義でした。
「ステージ上に存在する全てのインスタンスがイベントを受け取る」という仕様についての説明を聞いたとき、陳腐な表現でアレですが、頭の中に雷が落ちたような衝撃を受けましたよ。
思いっきり往復ビンタされて目が覚めたような思いです。
実に有意義でした。
今まで ActionScript 3.0 のクラスやそのプロパティ、as ファイルの書き方などといったものには目を向けていましたが、そのコードがどのような挙動をするのかという仕様は特に意識してきませんでした。
でもそれは例えるなら、ネットワーク技術者なのに、ネットワーク階層モデルの7つの階層のうち一番上のアプリケーション層しか見ていないことと同じことじゃないか、ということを、この一言で思い知らされました。
なんて自分はバカだったんだ。仕様を理解せずにプログラム言語をまともに扱えるはずもない…… まぁこれが独学の限界なんですかねぇ。反省することしきりです。
以下、講義で受けた内容を、もっぺん頭の中で整理するために、記憶を頼りに構成します。記憶頼りなので、実際にあった説明と食い違う部分が発生するかも知れませんが、仮に誤読でも自分のためになればいいやという、極めて主観的な思いこみの元で話を進めます。
まずは最初のサンプル
AS 3.0 での挙動 ソース |
AS2 での挙動 ソース |
これらのサンプルでは赤い正方形にイベントハンドラを addEventLister をしています。
赤い正方形上でマウスを押すと "MOUSE_DOWN" という文字が表示されます。離すと文字が消えます。
講義で説明されたサンプルでは、MouseEvent.CLICK を使い trace 文出力をしていましたが、このサンプルではステージに配置したテキストフィールドに表示させるため、一部変更しています。今後提示するサンプルも同様に適宜、講義のコードとは変えています。
左が AS3.0 での挙動、右が AS2 での挙動です。
AS2 での挙動と言っていますが、実際には Flash 8 や CS3 で ActionScript 2 相応のパブリッシュをしたものではなく、AS3.0 で AS2 の状態をシミュレートしたものです。
両者の違いは青い正方形と重なっている部分。
AS3.0 ではカーソルが指ではなくなる、つまり、addEventLister で登録したマウスイベントハンドラを呼び出せなくなる。
一方、AS2 の方は指のまま。マウスイベントハンドラが呼び出せるということ。
AS2 と異なり、AS3.0 は全てのインスタンスが発生しているイベントを受け取るという仕様に変更されたため、このような事象が発生するのだそうです。
マウスイベントハンドラを登録していない青い正方形でもマウスイベントは受け取ってしまう。それゆえ下部にある赤い正方形はマウスイベントをインターセプトされてしまうということですよね。
全てのインスタンスがイベントを受け取るということがよく分かるのが、次に説明のあった MOUSE_MOVE を使ったサンプルです。
以下次回。
シリーズ