アンケートご協力のお願いgihyo.jpでは,2010年度に向けて豪華プレゼントが当たる読者属性アンケートを実施しております。ご協力ください。

gihyo.jp » DEVELOPER STAGE » 連載 » ActionScript 3.0で始めるオブジェクト指向スクリプティング » 第13回 キーボードによる操作

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

第13回 キーボードによる操作

今回は新しいお題として,キーボードのキーでインスタンスを操作してみたい。上下左右の矢印キーで,MovieClipインスタンスをその方向に移動させる。そのためには,キーが押される操作をイベントとして受取り,それが何のキーかを判別して処理することになる。

キーイベントを受取る

まず,キーボードのキーを押した操作はどう受取ればよいか。ActionScript 3.0では,イベントはつねにイベントリスナーの仕組みを使って処理する。キーを押すイベントは,InteractiveObject.keyDown(KeyboardEvent.KEY_DOWN定数)だ(※1)。

InteractiveObjectは, DisplayObjectクラスのスーパークラスである。マウスやキーボードの操作を扱う。MovieClipクラスはDisplayObjectクラスを継承するので,そのスーパークラスであるInteractiveObjectのイベントも当然受取れる(スーパークラスや継承については,第9回「座標の天動説と地動説」の「インスタンスとマウスポインタの座標」参照)。

もっとも,今回キーイベントInteractiveObject.keyDownのリスナーは,Stageオブジェクトをターゲットとして登録しなければならない。StageクラスもまたDisplayObjectクラスを継承するので,キーイベントは受取れる。しかし,なぜキー操作で動かそうとするMovieClipインスタンスを,ターゲットにできないのか。

MovieClipインスタンスに対してキーイベント(InteractiveObject.keyDownなど)のリスナーを登録すると,そのインスタンスにフォーカスを当てていないと(※2),イベントが受取れないのだ。またフォーカスを当てても,インスタンス外のステージ上をマウスクリックでもすれば,フォーカスが外れてイベントを受取らなくなってしまう。

したがって,フォーカスに関わりなくキーイベントInteractiveObject.keyDownを処理するには,キー操作で移動するMovieClipシンボルに以下のようなフレームアクション(スクリプト001)を記述する。なお,リスナー関数xKeyDown()はテスト用に,引数として受取ったイベントオブジェクトeventObjectをtrace()関数で[出力]パネルに表示することとした。

スクリプト1 キーを押すとイベントオブジェクトの情報を[出力]する

// MovieClip: キー操作で動かすインスタンス
stage.addEventListener(KeyboardEvent.KEY_DOWN, xKeyDown);
function xKeyDown(eventObject:KeyboardEvent):void {
  trace(eventObject);
}

[ムービープレビュー]を実行して,キーボードからキーを押すと,そのキーイベントの情報が[出力]パネルに表示される(図1)。ところが,[Enter]または[return]などいくつかのキーは,いくら押しても何も[出力]されない。つまり,KeyboardEvent.KEY_DOWNイベントが発生しないのだ。

図1 StageオブジェクトにキーイベントInteractiveObject.keyDownのリスナーを登録

図1 StageオブジェクトにキーイベントInteractiveObject.keyDownのリスナーを登録

[ムービープレビュー]のモードには,いくつかのキーにショートカットが割当てられている。たとえば,[Enter]または[return]キーなら,[制御]メニューの[再生]だ。ショートカットキーを押すと, FlashのSWFコンテンツでなく,メニューがそのキー入力を先に奪ってしまう。これを避けるためには,[制御]メニューで[キーボードショートカットを無効]にしておく必要がある(図2)。

図2 [制御]メニューで[キーボードショートカットを無効]

図2 [制御]メニューで[キーボードショートカットを無効]

※1)
押したキーを放すイベントは,InteractiveObject.keyUp(KeyboardEvent.KEY_UP)である。今回のインターフェースでは,キーを押したままにしたときに動き続けるようにしたいので,InteractiveObject.keyDown(KeyboardEvent.KEY_DOWN)イベントが適している。
※2)
インスタンスにフォーカスを当てるには,Stage.focusプロパティにその対象となるインスタンスを代入する。

著者プロフィール

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

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

URLhttp://www.FumioNonaka.com/

著書

  • ActionScript 3.0プロフェッショナルガイド

    ActionScript 3.0プロフェッショナルガイド(毎日コミュニケーションズ)

  • ActionScript 3.0辞典 [FlashPlayer 10/9対応]

    ActionScript 3.0辞典 [FlashPlayer 10/9対応](翔泳社)

コメント

コメントの記入

パスサポ

多数の情報処理技術者試験対策書籍の発行実績を誇る技術評論社がお届けする,資格試験合格サイト「めざせ! 情報処理試験 パスサポ」が開設されました。

ピックアップ

サクセスストーリーに続く,快適サーバー運用管理のヒント!

データの増大,煩雑な管理,システムダウン,セキュリティなど,迫りくる課題からシステム管理者の負担を軽くするポイントを解説します。

gihyo.jp インフラエンジニア情報局

ネットワークやITにかかわるあらゆる業種で必要とされるインフラエンジニアに向けた技術情報や心構え,その魅力について多角的に紹介。

テストエンジニア ステーション

いま,ITに関わるあらゆる開発業務で注目されつつあるテスト系エンジニアをターゲットにしたコンテンツサイトを展開します。

一行クイックアンケート

gihyo.jpで取り上げてほしいネタは?

※検索はページ右上の検索ボックスをご利用ください。

その他の連載

読むウェブ ~本とインタラクション

ディスプレイで読む活字とそのインタラクション(interaction:相互作用)について,最新Webを紹介しながら読み解いていく。

いま,見ておきたいウェブサイト

この連載では,国内外の最新のウェブサイトを隔週更新で取り上げ,これら最新サイトの特徴や素晴らしい部分を,さまざまな角度から解説していきます。

Windows phoneアプリケーション開発入門

Windows Marcketplace for Mobileがサービス開始され,作成したアプリケーションを個人でも世界をターゲットに公開できる環境が整ってきました。これを機にWindows phoneアプリケーションの開発をしてみませんか?

ここは知っておくべき!Windows Server 2008技術TIPS

5年ぶりのサーバOSとなったWindows Server 2008が出荷されて早2年。2009年にはR2が出荷され,再び注目を集めています。発売前から実施したトレーニングによって感じた,インフラエンジニアの方々に知っておいていただきたい機能を中心にご紹介します。

キーパーソンが見るWeb業界

本連載はWeb Site Expert/gihyo.jpとの連動企画です。阿部淳也, 長谷川敦士, 森田雄のお三方による,Web業界をテーマにした座談会です。

きたみりゅうじの聞かせて珍プレー

ソフトウェア開発の現場で体験したトホホな失敗,思わずうなる珍プレーをきたみりゅうじ氏が四コママンガで紹介。みなさんからの投稿もお待ちしてます!

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

野中文雄氏が,簡単なスクリプトは書いたことがあるという初級者を対象に,ActionScript 3.0の基本からクラス定義までを解説します。

まだ間に合う「ITパスポート」受験対策 原山先生の短期合格塾

この連載では,4月18日のITパスポート試験の受験に向けて,短い期間で効率良く受験対策を行う方法や,確実に得点するための裏ワザなどを伝授していきます。

連載一覧

gihyo.jp

  • DEVELOPER STAGE
  • ADMINISTRATOR STAGE
  • WEB+DESIGN STAGE
  • LIFESTYLE STAGE
  • SCIENCE STAGE
  • NEWS & REPORT

書籍案内

  • 新刊書籍
  • 書籍ジャンル一覧
  • 書籍シリーズ一覧
  • 新刊ピックアップ
  • ロングセラー
  • 電脳会議

定期刊行物一覧

  • Software Design
  • WEB+DB PRESS
  • Web Site Expert
  • 組込みプレス