ActionScript 3.0で始めるオブジェクト指向スクリプティング

第5回 イベントリスナーを使う

この記事を読むのに必要な時間:およそ 3 分

前回の第4回関数を使ってパーツ化するでは,まとまった処理を関数として定義し,いつでも何度でも呼出せるようにした。今回は,「イベントリスナー」について学習する。関数をイベントリスナーとして登録することにより,指定したイベントが発生したときに,その関数が呼出されるようにしてみたい。

イベントとは

FlashのActionScriptは,イベントをベースにして処理が構成される。イベントというのは,ユーザーのマウスクリックやキーボード入力のようなインタラクションから,外部データの読込みや,ディスプレイの描画更新のようなシステムの処理まで,さまざまな事象・状態の変化にともなって発せられるFlash Playerからの信号である。

その信号を検知することにより,ユーザーがクリックしたとか入力したとか,あるいは外部データの読込みが終わった,画面がリフレッシュされたといった事象の瞬間を捉え,必要な処理を実行することができる。

イベントを受取ってスクリプトで処理をするには,Flash Playerがイベントを伝える相手つまりターゲットと,イベントの種類を知らなければならない。ただ,この段階では,ターゲットとしてはまずムービークリップを扱い,イベントもその都度ひとつひとつ覚えていけばよい。学習が進むにつれ,イベントの体系やその調べ方も徐々に身についていくだろう。

表1 ムービークリップが受取るイベントの例

イベント発生時期
clickユーザーがインスタンスをマウスでクリックしたとき
keyDownユーザーがキーボードのキーを押したとき
enterFrame画面の描画が更新されるとき

今回は,前回つくった時計のアニメーションの続きを,イベントを使って作成する図1※1)。アニメーションは,画面の描画が更新されるたびに,ステージ上のイメージを変化させる処理だ。したがって,利用するイベントはenterFrameになる表1)。描画更新の頻度は,フレームレートに依存する。デフォルトの12fpsなら,スクリーンは1/12秒ごとにリフレッシュされることになる。したがって,このイベントも同じ1/12秒間隔で発生する。

図1 前回作成した時計のアニメーション

図1 前回作成した時計のアニメーション

※1
前回のサンプルファイルは,第4回「関数を使ってパーツ化する」2ページ目からダウンロードできる。

イベントとイベントリスナー

ActionScript 3.0では,イベントリスナーという仕組みによってイベントを扱う。まず第1に,イベント発生時に行いたい処理を,関数として定義する。そして第2に,イベントを受取るターゲットとなるインスタンスに,その関数を登録する。すると,イベントが発生したときに,その関数が呼出されることになる。

イベントリスナーを使った処理の書き方
  1. リスナー関数の定義
  2. ターゲットインスタンスにイベントリスナーとして登録

ターゲットのインスタンスに登録された関数は,イベントの発生を検知(listen)して呼出される。そのため,「イベントリスナー」とか「リスナー関数」と呼ばれる。前回作成した時計のムービーでは,すでにアニメーションの処理が関数として定義してある図2)。これは,ほぼそのままリスナー関数として用いることができる。

図2 時計のシンボル内の第1フレームアクション

図2 時計のシンボル内の第1フレームアクション

他方,メインタイムラインのフレームアクションに記述した,関数の呼出しは要らなくなる。イベントリスナーとして登録すれば,リスナー関数は自動的に呼出されるからである。また,関数の呼出しが不要になれば,それを繰返し実行するためのフレームループも必要ないので,メインタイムラインは1フレームで足りる図3)。

図3 メインタイムラインのフレームアクションは削除して1フレームに

図3 メインタイムラインのフレームアクションは削除して1フレームに

↓

図3 メインタイムラインのフレームアクションは削除して1フレームに

著者プロフィール

野中文雄(のなかふみお)

ソフトウェアトレーナー,テクニカルライター,オーサリングエンジニア。上智大学法学部卒,慶応義塾大学大学院経営管理研究科修士課程修了(MBA)。独立系パソコン販売会社で,総務・人事,企画,外資系企業担当営業などに携わる。その後,マルチメディアコンテンツ制作会社に転職。ソフトウェアトレーニング,コンテンツ制作などの業務を担当する。2001年11月に独立。Web制作者に向けた情報発信プロジェクトF-siteにも参加する。株式会社ロクナナ取締役(非常勤)。

URLhttp://www.FumioNonaka.com/

著書

コメント

コメントの記入