ActionScript3.0 ぷちクイズ 第2問:Videoオブジェクトにクリックイベントを付与するには?


Videoオブジェクトにクリックイベントを付与するには?

例えばビデオ映像の一時停止や拡大を行いたいとき、
マウスクリックで処理を実行するのが大抵の操作ですよね。

一時停止ボタンや拡大ボタンをクリックさせるのであれば、
ボタンオブジェクトを作成し、クリック時のイベントを追加してあげればOKです。

ではビデオ映像自体をクリックしたときに処理を実行する場合も
Videoオブジェクトにイベントリスナをセットしてあげればよいでしょうか。
実は以下のように実装しても、クリックイベントは取得できません。
どうすればよいか、考えてみましょう。

<問題>
再生映像をクリックしたときに「ビデオがクリックされました」が出力されるよう、
以下のプログラムを編集してください。

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("ビデオがクリックされました");
});

答えは以下です。



<答え>
~~~~~

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に対して用意してあげればよいわけですね。

  • このエントリーをはてなブックマークに追加

PAGE TOP