FlashBlog

自分の為のFLASHノート

外部FLVファイルをSWF上に再生させる

2006-01-21 08:52:15 | FLASH
MX2004以降ならこちらの方法で簡単かと・・・。

(1)幅300pix、高さ260pixの新規ドキュメントを開く
(2)コンポーネントウインドウからMediaDisplayをドラッグし、ステージにドロップする。x=0、y=0に設置
(3)コンポーネントインスペクターウインドウを開き、flvにチェック
(4)URLボックスに、flvファイルのパスとファイル名を入れる
   例では、同じホルダーにflashファイルとflvファイルがあるので、
   単に、punto2.flvと記入
   Automatically Playにチェックを入れる(自動再生)
   Use Preferred Media SizeとRespect Aspect Ratioのチェックをはずす
   (元ファイルに関係なくステージのMediaDisplayのサイズで表示される)
(5)コンポーネントウインドウからMediaControllerをドラッグし、
  MediaDisplayの下部にドロップする
  インスタンス名をcontrolとする(何でも良い)
  プロパティーでcontrollerPolicyをonに設定(見えるようにする)
(6)MediaDisplayを選択し、ビヘイビアウインドウでビヘイビアの追加ボタン(左上の十の字ボタン)をクリックし、「メディア」「コントローラを関連付ける」をクリック、開いたウインドウで、control、相対を選択する

詳細はこちら



しかし、俺はMXしかないのでスクリプトで頑張ったょ・・・。

ライブラリパネル右上から新規埋め込みビデオ作成。
ステージに置いてインスタンス名をfvとする。
フレームに以下のスクリプト

nc = new NetConnection();
nc.connect(null); // http または file 経由という意味
ns = new NetStream(nc);
fv.attachVideo(ns); // fv は、ステージ上の Flash ビデオに付けたインスタンス名です
ns.play("douga.flv"); // 同じ階層の douga.flv ファイルを再生します

これで一応再生される(なんか不具合あったら最後stop();でもいれて)
ただこのままでは一度再生したあと止まる。
ループ再生させたい場合は

ns.onStatus = function(infoObject) {
if (infoObject.code == "NetStream.Play.Stop") {
this.seek(0);
}
};

を追加で。
(ムービークリップに入れたら案外もっと簡単にいくかも、、、試してないが)
動作確認はフラッシュプレイヤー7から。それ以前では確認できないので注意