• 締切済み

flash video

FLVPlayback コンポーネントを使用して、ステージに、レイヤー1にインスタンスを1フレーム目に配置して、2フレーム以降は、空白フレームにしたら、映像が見れないのです。レイヤー2には、普通のvideo以外の素材を展開させているのですが、2フレーム以降に進む場合、何かscriptで書かなければいけないのでしょうか?

みんなの回答

  • DPE
  • ベストアンサー率85% (666/776)
回答No.2

1フレームだけでできているムービーの場合は、フレーム1が常に再生されます。 この間、ステージに存在しているムービークリップ等は稼動しています。 例えば複数のフレームから成るアニメのムービークリップをフレーム1に置いた場合、メインのタイムラインがフレーム1で止まっていても、ムービークリップのアニメは自分のタイムラインに従って再生され続けます。 これはコンポーネントでも同じことで、フレーム1しかないムービーに FLVPlayback コンポーネントを配置すれば、動画は通常通り、最後まで再生されます。 フレーム2以降があるムービーでは、何も指示しなければ、フレーム1が再生されてすぐ(フレームレート分の1秒後)に次のフレームであるフレーム2が再生されます。 つまり、フレーム1に FLVPlayback コンポーネントのインスタンス、フレーム2に他の素材を配置したとすると、フレーム1が再生されてすぐに次のフレーム2が再生され、一瞬でコンポーネント(のインスタンス)そのものがステージから消えてしまいます。 当然ながら、コンポーネントが存在しないフレームでは動画は再生されません。 ----------------------------------------------------------- 動画を再生してから次のフレームに進むには、一旦 stop(); でタイムラインを止め、動画の再生が終了するまで待ってから先に進むようなスクリプトが必要です。 FLVPlayback コンポーネントでは、FLV ファイルの最後に達した時に complete というイベントが発生します。 このイベントが起きた時にメインのタイムラインを動かすようにすると、動画が終了するまで待ってから先に進めるようになります。 レイヤー1のフレーム1に FLVPlayback コンポーネントのインスタンスを配置し、インスタンス名を付けてください。 ここでは仮に、” flv_player ”とします。 レイヤー1のフレーム2以降は空白のキーフレームにしても構いません。 別のレイヤーをもう1つ作り、このレイヤーにはスクリプトだけを記述します。 スクリプト用のレイヤーのフレーム1に、次のようなスクリプトを書きます。 (↓各行頭に全角のスペースが入っています。コピーする際は、全て半角のスペースかタブに置き換えてください)  //リスナーオブジェクトを作成  obj = new Object();  //動画の再生終了後、次のフレームに進む  obj.complete = function()  {   _root.play();  };  //リスナーオブジェクトを登録  flv_player.addEventListener( "complete" , obj );  //タイムラインを止めておく  stop(); stop(); アクションで、一旦、フレーム1でタイムラインを止めます。 タイムラインが止まっていても FLVPlayback コンポーネントのインスタンス” flv_player ”は稼動していますから、指定された動画が再生されます。 この動画が終了(ファイルの最後まで再生された場合)すると、obj.complete = function・・・で定義した関数が呼び出されます。 その内容は _root、つまりメインのタイムラインを再度動かすというものですので、動画の再生終了を待って先に進めるという仕組みです。 なお、FLVPlayback コンポーネントの autoRewind パラメータを true にしていると、フレーム2が再生される直前に、一瞬、動画の最初のコマが見えることがあります。 動画に続けて他のアニメ等を表示するなら自動で巻き戻す必要はないかと思います。 「パラメータ」のタブで、autoRewind パラメータを false に設定してください。

botasblk
質問者

お礼

的確で、しかもとてもていねいでわかりやすい回答ありがとうございます。感動しました。 早速試して見たいと思っています。

すると、全ての回答が全文表示されます。
  • suzuko
  • ベストアンサー率38% (1112/2922)
回答No.1

うん? 勘違いならごめんなさい。 1フレーム目にのみインスタンスで、止めてるわけでなく、2フレーム目にない。 その場合、映像は1フレーム分しか表示されないのでは?(つまり人間の目には留まらない)

botasblk
質問者

補足

すみません。 FLVPlayback コンポーネントのインスタンスは、ステージのレイヤー1のフレーム1だけにある場合、10秒の映像素材が、ちゃんと見れるんですよ。

すると、全ての回答が全文表示されます。

関連するQ&A