• 締切済み

50秒後に2フレームへ行き再生開始

50秒後に2フレームへ行き再生開始 1フレーム目に「50秒後に2フレームへ行き再生開始」 というスクリプトを書いて動作させたいのですが、調べても分からず大変困っております。。 1フレーム目にflvを置いているので、 flvの再生が終了したら(flvが45秒程度なので50秒後に)2フレーム目に行きその後の動きをさせたいと思います。 お分かりになる方ご教授いただきたいと思います。 よろしくお願いします。 環境はWin XP、Flash CS3、actionscript3、flash player9です。

みんなの回答

回答No.3

難しそうでもやらなきゃダメ ActionScriptはAjaxと同じでイベントが基本 というかActionScriptの行き着く先って ほとんどAjaxみたいなもんですからね 難しそうだからってイベント関連を避けてたら 再生ボタンも停止ボタンも作れないし プリローダも作れないし動的なアニメーションもできないし なんにもできませんよ 『動画の再生が終わったら次のフレームに』なんて これ以上ないくらい簡単でひねりのない 絶好のイベントリスナー基本習得のテストケースです あと#1にも書いてますが 何秒後に処理を実行する というのはsetTimeoutを使います しかし、getTimerやsetTimeoutは 再生が遅れてようが データ読み込み終わってなかろうが カウントが開始した時点から かまわず同じように時間を カウントし続けるので 同じようにsetTimeoutとか getTimerとかで制御されてる ものとタイミング合わせる以外では 使わない方がいいです このケースでは大丈夫だろうとか 油断してるとまさかのISDNとか それでなくても公共のWi-Fiとか いくらでも再生が遅れてしまう 要因というのはあります

usk99
質問者

お礼

そうですよね、、 教えていただいたことを参考に基本から制作してみたいと思います。 ありがとうございました!

回答No.2

そこからなんですね… ボタンがクリックされたとか 再生フレームが次に移動したとか データのロードが終わったとか 動画の再生が終わったとか なにか起こったタイミングで何かさせたい っていうときにイベントハンドラとか イベントリスナーを使います AS2まではイベントハンドラもあったんですが AS3からイベントリスナー方式に統一されました "イベント発信するもの".addEventListener("イベント型"、"関数") でリスナーを登録します AS3のリスナーの関数は イベントオブジェクトを引数に実行されます コードは#1で書いてあります myFLVPlaybackのところが FLVプレイバックインスタンスの名前 someFuncのところが function(e:Event){gotoAndPlay(2)} とかになったりするワケです ヘルプを見ると継承元のクラスの中に EventDispatcherがいるクラスは パブリックプロパティとパブリックメソッドについで イベントが書かれていて それぞれにどのタイミングで 発信されるかが書いてあるかと思います そこを見るとFLVPlaybackクラスは ビデオの再生が終わるとCOMPLETEイベントを 発信すると書いてあるはずです

usk99
質問者

お礼

難しそうですね。。 FLVですが、そこまで重いものでもないのでロードにも2、3秒程度しかからないと思います。(環境にもよると思いますが) なので、もし「何秒後に2フレーム目に移動」という処理の方が簡単なのであれば、余裕を持った秒数の設定にして、そちらで対応したいと思うのですが。 その場合もリスナー登録をした処理になるのでしょうか?

回答No.1

ビデオの再生が終わったらとか そういうのは時間で計るより イベントリスナーでやった方がいいです ビデオのストリーミング再生が追いつかず 想定より再生がおくれて尻切れに… ってこともなきにしもあらず FLVPlaybackはflvの再生が終わったら fl.video.VideoEvent.COMPLETEイベントを 発信するのでそれにリスナー登録してください myFLVPlayback.addEventLisetener(fl.video.VideoEvent.COMPLETE,someFunc) 再生が終わってからしばらく実行を待ちたいなら setTimeout(someFunc,遅延時間(ミリ秒)) で実行を送らせる事ができます

usk99
質問者

お礼

回答ありがとうございます! >想定より再生がおくれて尻切れに… そうなんですね、、教えていただきありがとうございます。 >発信するのでそれにリスナー登録してください すみません、、少し僕には難しそうなんですが具体的に書いていただくとどういうスクリプトになりますでしょうか?

関連するQ&A