• ベストアンサー

外部FLVの制御

ステージ1のフレーム1に、約10秒の外部flvを読みんでいるのですが、もちろん、stop();でフレーム1を止めています。10秒の再生が終われば、自動的にフレーム2以降に進むには、どのようなscriptが必要なのでしょうか?

質問者が選んだベストアンサー

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

#1です。 次のようなスクリプトを、フレーム1に追加してみてください。 (↓各行頭に全角のスペースが入っています。コピーする際は、全て半角のスペースかタブに置き換えてください)  //ストリーミングの状況を監視  my_ns.onStatus = function( info:Object )  {   //再生が終了した時に先に進む   if( info.code == "NetStream.Play.Stop" )   {    _root.play();   }  }; NetStream クラスで動画を再生している時は、onStatus イベントハンドラを利用して再生中に起こる様々な状況を把握することができます。 再生中に何かが起こるたびに、onStatus = function で定義した関数が呼び出されます。 この時、呼び出される関数には”何が起きたのか”という情報がパラメータ(引数)として渡されてきます。 渡される情報は2つあるので、Object 型という汎用型の変数にまとめて渡されてきます。 その2つは code と level という名前で識別しますが、普通は code の方に入っているメッセージを見ると、何が起こったのかを具体的に知ることができます。 動画の再生が終了した時は様々なことが起こり、onStatus に登録した処理が何回か呼び出されます。 そのうちの1つに、動画の再生が終了したことを知らせる” NetStream.Play.Stop ”というメッセージがあります。 上記のスクリプトでは、onStatus に登録する関数の中でこのメッセージを判別することで再生の終了を検出し、動画の再生終了を待って先に進んでいます。 これは、FLVPlayback コンポーネントで発行される” complete ”イベントに相当します。 実はコンポーネントでも、内部ではこの onStatus を使って再生状況を監視しています。 onStatus は上記のスクリプトを見て分かる通り少々ややこしいので、難しい処理を内部に隠し、もっと単純に complete という名前のイベントとして扱えるようにしてくれているだけなのです。

botasblk
質問者

お礼

とても分かりやすく、完璧で丁寧な説明をありがとうございます。 scriptが、だんだん好きになってきました。

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

その他の回答 (1)

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

FLVPlayback コンポーネントをご利用でしたら、前回 http://okwave.jp/kotaeru.php3?q=2078295 の#2でご紹介しましたスクリプトがおっしゃる動作のスクリプトですが、上手くいきませんでしたか? コンポーネントのインスタンスには名前を付けてください。 この名前がなければ始まりません。 FLVPlayback コンポーネントのインスタンスをステージに配置し、このインスタンスを選択した状態で「プロパティ」か「パラメータ」パネルを見てください。 パネルの左上の方に、<インスタンス名> と書かれている項目があります。 ここに、半角の英数字と” _ ”だけで何か名前を入力してください。(どちらのパネルで入力しても同じです) 前回 No.2078295 の#2では、ここに flv_player と付けたものとしてスクリプトを組んでいます。 それから、フレーム1に次のようなスクリプトを書きます。 (No.2078295 の#2に書いたものと同じ内容です) 見辛くてすみませんが、コピーしてそのまま使えます。 //リスナーオブジェクトを作成 obj = new Object(); //動画の再生終了後、次のフレームに進む obj.complete = function() { _root.play(); }; //リスナーオブジェクトを登録 flv_player.addEventListener( "complete" , obj ); //タイムラインを止めておく stop(); 違うインスタンス名を付けた場合は、  //リスナーオブジェクトを登録  flv_player.addEventListener( "complete" , obj ); ↑この箇所の”flv_player”の部分を、ご自分で付けた名前に変更してください。 --------------------------------------------------------------- コンポーネントを使わずに動画を再生している場合は、どのように作っているか・どんなスクリプトを書いているかなどを補足していただければ、分かる範囲内で回答いたします。 締め切りやコメントは急がなくても構いませんので、まずは試してみて、不明な点がありましたら補足してください。

botasblk
質問者

補足

何度も本当にすみません。 説明不足でした。 今回の質問はですね。 コンポーネントではなくて、1フレームに外部flvを読み込むscriptを書いております。 /* あらかじめ_rootにビデオオブジェクトを配置してインスタンス名をmy_videoにします。 */ // NetConnectionオブジェクト生成 my_nc = new NetConnection(); // ローカルストリーミング接続 my_nc.connect(null); // NetSteamオブジェクト生成 my_ns = new NetStream(my_nc); // ビデオオブジェクトにストリームを割り当て my_video.attachVideo(my_ns); // バッファ設定 my_ns.setBufferTime(5); // flv読み込み・再生 my_ns.play("myflashvideo.flv"); のようなscriptです。 いつも、親切に回答していただき本当に感謝しております。

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

関連するQ&A

  • flvについて

    外部flvを1フレーム目に読み込んでいまして、10フレーム目に、別の外部flvを 読み込んでいます。 最初のflv再生中、10フレーム目の別のflvを再生しようと、ボタンで gotoAndPlay(10)で飛ぶと、最初のflvの再生が終ってくれません。途中で飛ぶ時 に再生中のflvを止める事は可能でしょうか?よろしくお願いいたします。

  • flv外部読み込みファイルのエンドレス再生が不安定です。

    flvファイルを外部読み込みにし、エンドレス再生を試みました。 _root.onEnterFrame = function(){ if(mediacomponent.playheadTime >= mediacomponent.totalTime){ mediacomponent.stop();//停止 mediacomponent.play();//再生 } } とasフレームに書き込みました。 スムーズに連続再生される時もあるんですが、 3分くらい一時停止した後に再生されるときもあります。 1回の再生終了後、スリープ数秒の記述を入れれば、 うまく連続再生できるのでしょうか? だとしても、その記述の仕方がわかりません。 あと、fiv外部読み込みにする前はフレーム読み込みで連続再生 を試みたのですが、速度がオリジナルよりだいぶ遅くなり断念しました。 その際、NowLoading設定していたのは効いていたんですが、 flv読み込みに変更した後からは効いていないようです。 3フレーム目にムービーが読み込まれているので、 if (_framesloaded>3) { gotoAndPlay(3); } else { gotoAndPlay(1); } と記述しています。 ●flv外部読み込みで安定した連続再生の方法 ●flv外部読み込みでNowLoadingを有効にする方法 おわかりの方、お知恵をお貸しください。

    • ベストアンサー
    • Flash
  • 外部flvファイルのループ再生

    質問です。 外部flvファイルのループ再生は可能なのでしょうか? gotoAndplayで戻しても、ループされません。 flvファイルを再度“再生”するという、スクリプトがいるのでしょうか? おわかりになる方、教えてください。

  • 外部flvファイルの再生終了の確認をできるようにしたい

    FLVPlayback コンポーネントを使って、アニメーション中に外部flv動画が再生されるようなものを作っています。 動画再生終了後に、次のアニメーションに移りたいのですが、外部flvファイルは定期的に更新されるので、何フレームあるのかわかりません。そこで、ActionScriptを使って外部flvファイルの再生が終了したらgotoAndPlay("");みたいな処理をしたいのですが、どのようにすれば良いでしょうか。 それと、よくあるプリローダー、いわゆる先読み機能では外部のflvファイルも一緒に先読みされるのでしょうか。 CS3+AS2+winvista環境です。 よろしくお願い致します。

    • ベストアンサー
    • Flash
  • AS3.0による外部swfの制御

    AS3.0による外部swfの制御 質問させていただきます。 やりたいと事は、メインとなるswfのボタンを押して、 読み込んだ外部swf(stopしている)を再生(play)したいと考えております。 メインのswfはAS3.0、読み込む外部swfはAS2.0になります。 環境はFlash CS3です。 以下がスクリプトになります。 //swf読み込み配置 var loader_obj : Loader = new Loader(); var url : URLRequest = new URLRequest("test.swf"); MovieClip(root).loader_obj.load(url); loader_obj.y = 3 loader_obj.x = 392 stage.addChild(loader_obj); //swfボタン制御 btn.addEventListener(MouseEvent.ROLL_OVER,btn_play); function btn_play(event:MouseEvent):void {MovieClip(root).photo.gotoAndPlay(2);//メインswfのムービーリップも動かす <--ここに外部swfを参照するスクリプトが入ると思うのですが・・・-->gotoAndPlay(2);//外部swfの2フレーム目から再生 } 肝心の所のスクリプトはわかりません・・・ 宜しくお願い致します。

    • ベストアンサー
    • Flash
  • スクリプト外部ムービーの制御

    こんにちは。 外部ムービー(.swf)を読み込んでそれをスタートボタン、ストップボタンで制御したいのですが外部ムービーがスクリプトでできているためか制御できません。スクリプトでできた外部ムービーは制御不可能なのでしょうか?もし不可能ならばなんとかほかのアイデアはありませんでしょうか?ただ読み込んだものを止めたり再生したりしたいだけなのですが。。。 どうぞよろしくお願いします。 ちなみに環境WinXP Flash Pro8です。もしCS3ででもできればアイデア下さい。

  • 重たい外部swfのプリロード

    空のmcをステージにおき、そのフレームに、loadMovie();で外部のswfを読み込むまでは、出来るのですが、その外部swfが重い場合なので、プリロード(%)表示させたいのですが、どの場所にどういったscriptが、必要ですか? onClipEvent (data)ハンドラで外部ファイルのロードを待つとかのscriptを書いてるのですが、間違っているのでしょうか?

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

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

  • Now Loading+FLV_????? 教えてください!

    皆様、お世話になります。 以下、某Flash入門書に載っている簡単なNow Loadingのスクリプトです。 この本では、load完了後、jpegの写真が表示されます。 私は、load完了後に、自前のFLVを再生させたいと思い、既存のjpegを 自前のFLVに取り替えました。書き出すと、エラーが起こります。 以下、どのようにしたら、Now Loadingのカウントダウン後に、FLVが表示 できるでしょうか? ----------------------------------------------------------------------------------------------------------------- //イベントリスナーの登録 addEventListener(Event.ENTER_FRAME, loadCheck); stop(); function loadCheck(event:Event):void { //ロードされたパーセンテージを求める var percent:int = Math.ceil(loaderInfo.bytesLoaded / loaderInfo.bytesTotal * 100); //テキストボックスに表示 percentBox.text = percent + "%"; //100%ロードされたら if (percent >= 30) { //イベントリスナーを削除 removeEventListener(Event.ENTER_FRAME, loadCheck); //2フレーム以降に進む gotoAndPlay(2);; } } -----------------------------------------------------------------------------------------------------------------

    • ベストアンサー
    • Flash
  • 外部読み込みムービー上の音楽制御

    ステージにムービークリップを置いて、そこに外部のムービーを読み込んでいます。 その外部のムービー上で音楽が流れており、その音楽のボリュームを変えたいと思っているのですが、どうもうまく行かないのです。 下記はボリュームオン・オフ用のムービークリップに書いたスクリプトです。(music_button) //クリックされた時にオン・オフを切り替える on(press){ music = music * (-1); //サウンドのオンオフを切り替える s1_sound.setvolume(music*100); if (music = 1){s1_sound.start();} else{s1_sound.stop();} } 外部のムービークリップ上の音楽には「BGM」という識別子をつけています。 上記のmusic_buttonの置いてあるメインタイムラインの2フレーム前で _global.s1_sound = new Sound(); s1_sound.attachsound("BGM"); という宣言をしています。 何か音楽を制御するための要素が足りないのでしょうか。あるいは、階層の指定などが間違っているのでしょうかね。。。 何か手がかりをご存知の方よろしくお願いします。

    • ベストアンサー
    • Flash
このQ&Aのポイント
  • 自宅でSoft Bank 光を契約し、付属レンタルのルーターを使用しています。しかし、iPadminiやiPhoneを接続するとデータ通信が遅くなることがあります。一時的な改善方法として、Wi-Fiを再接続すると速度が向上することがあります。しかし、原因はわかりません。原因に心当たりのある方がいれば教えてください。
  • 自宅Wi-Fiの速度が遅い原因として考えられるのは、ルーターの位置や障害物の影響、デバイスの設定、回線の問題などがあります。まず、ルーターの位置を確認し、できるだけ接続するデバイスに近づけてみてください。また、障害物が信号を遮ることも考えられるので、適度な位置にルーターを移動してみると良いでしょう。さらに、デバイスの設定やアプリの更新が必要な場合もあります。最後に、回線の問題が疑われる場合は、プロバイダに問い合わせてみてください。
  • 自宅Wi-Fiの速度が遅くなる原因として、他のデバイスが同時に大量のデータを使用している場合も考えられます。複数のデバイスが接続されている場合は、帯域幅が分散されるため、速度が低下することがあります。また、ルーターの設定やソフトウェアの不具合、Wi-Fiのチャンネルの混雑なども原因となります。これらの問題を解決するためには、ルーターの設定を見直すか、専門家に相談することが必要です。
回答を見る