2013.02.12
ActionScript3.0 ぷちクイズ 第2問:Videoオブジェクトにクリックイベントを付与するには?
Videoオブジェクトにクリックイベントを付与するには?
例えばビデオ映像の一時停止や拡大を行いたいとき、
マウスクリックで処理を実行するのが大抵の操作ですよね。
一時停止ボタンや拡大ボタンをクリックさせるのであれば、
ボタンオブジェクトを作成し、クリック時のイベントを追加してあげればOKです。
ではビデオ映像自体をクリックしたときに処理を実行する場合も
Videoオブジェクトにイベントリスナをセットしてあげればよいでしょうか。
実は以下のように実装しても、クリックイベントは取得できません。
どうすればよいか、考えてみましょう。
<問題>
再生映像をクリックしたときに「ビデオがクリックされました」が出力されるよう、
以下のプログラムを編集してください。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | var nc:NetConnection; var ns:NetStream; var vid:Video; nc = new NetConnection(); nc.connect( null ); ns = new NetStream(connection); ns.client = this ; vid = new Video( 300 , 200 ); stage.addChild(vid); vid.attachNetStream(ns); ns.play( "test.flv" ); //ビデオオブジェクトのイベントリスナを定義 vid.addEventListener(MouseEvent.CLICK, function () { trace ( "ビデオがクリックされました" ); }); |
答えは以下です。
↓
↓
↓
<答え>
~~~~~
1 2 3 4 5 6 7 8 | vid = new Video( 300 , 200 ); var mc:MovieClip = new MovieClip(); //←MovieClipオブジェクトを生成 mc.addChild(vid); stage.addChild(mc); //Videoオブジェクトをmcにaddする mc.addEventListener(MouseEvent.CLICK, function () { //←MovieClipオブジェクトにイベントリスナをセット trace ( "ビデオがクリックされました" ); }); |
※編集箇所をピックアップして記載しています。
~~~~~
これでOK。
Videoオブジェクトのクリックイベントは取得できないので、
MovieClipオブジェクトの中にVideoオブジェクトを入れ込んで、
イベントリスナ自体はMovieClipに対して用意してあげればよいわけですね。
WEBアプリケーション関連 人気連載リンク
基礎からPHPWEBアプリ解発を学ぶなら・・
PHP基礎 連載
より実践的なWEBアプリ開発講座!Bootstrap活用を学ぶなら・・
魁!小野の塾 連載