• 締切済み

外部ムービー再生終了後、特定のラベルへ飛ぶ

外部ムービー再生終了後、特定のラベルへ飛ぶ 質問させていただきます。 制作環境はAS2.0 FlashCS3 やりたいことは親swfに外部swfムービーを読み込んで 外部ムービーの再生が終わったら、親swfの特定のラベルに飛ぶ、というものです。 親swfの1フレーム目に書き込んだスクリプトは・・・ this.stop(); this.movie.loadMovie("movie1.swf"); if ( movie._currentframe == movie._totalframes ) { this.gotoAndStop("next"); } しかし、いきなりnextラベルに飛んでしまいます・・・ 宜しくお願い致します。

  • Flash
  • 回答数1
  • ありがとう数4

みんなの回答

  • BumeshiOK
  • ベストアンサー率92% (12/13)
回答No.1

そのコードですと、movieに読み込む前にフレーム数の評価式を実行しますので、 movie内は1フレームしかなく、結果的に"next"にすぐさま移動します。 (loadMovieは実行してすぐに読み込み完了するものではないので) 方法は三つ。 1.movie1.swfの最後のフレームから命令を出す movie1.swfの最後で、 _parent.gotoAndStop("next"); とする。 いちばんシンプルな方法ですが、 もしmovie1.swfが編集不可であれば無理です。 2.外部SWFの読み込み開始を検知する this.stop(); this.movie.loadMovie("movie1.swf"); this.onEnterFrame = function(){//movieの状態を監視する if(movie.getBytesTotal() > 100){//movieの容量が100バイト以上を検知(すなわち準備完了) if ( movie._currentframe == movie._totalframes ) {//現在フレームを監視 this.gotoAndStop("next"); delete onEnterFrame; } } onEnterFrameで 読み込み状態を監視し、さらにフレーム番号も監視した上で、 再生終了時の命令を実行します。 質問者さまのコードをベースにしているので、改修は楽ですがちょっと古い手法です。 3.MovieClipLoaderクラスの使用 ご提示のスクリプトをまんま下記に書き換える this.stop(); var mcl = new MovieClipLoader(); var lis = new Object(); lis.onLoadInit = function(mc){//準備完了イベント mc.onEnterFrame = function(){//movie内でフレーム番号を監視 if ( this._currentframe == this._totalframes ) { gotoAndStop("next"); this.onEnterFrame; } } mcl.addListener(lis); mcl.loadClip("movie1.swf",movie); 軽く説明用コメントつけましたが、詳細に書くと大変なので、 MovieClipLoaderで検索して頂くと、良いと思います。 AS2.0であればこれが最も良い手法だと思います。 ちなみに、thisを書いた場合は、そのコードが格納されている関数の場所を指します。 関数内でなければそのコードが記載されている場所。 thisを省略した場合は、関数内であった場合も、そのスクリプト自体が書かれている場所を指します。 これを理解すると、色々工夫できるようになりますよ。

playmobil
質問者

お礼

ありがとうございます! 3つもサンプルコードを書いていただいて・・・ そうなんです・・movie1.swfが編集不可なので1は出来ないんです・・・ 2と3、早速1フレーム目に書き換えてみました! しかし、どちらもうまく動いてくれず、nextラベルに飛んでしまいます。 試しに this.stop(); this.movie.loadMovie("movie1.swf"); として、ムービー自体読み込むかテストしたところちゃんと読みました。 ファイル名が違ったり、壊れていたりしてないようです。

playmobil
質問者

補足

解決しました! 2.のエラーを見たところ原因は「}」が一つ足らなかったようです。 ほんと助かりました。ありがとうございました。

関連するQ&A

  • いくつかの外部swfムービーをつなげてムービーをつくりたい。

    よく、いくつかのswfムービーで構成されているサイトをみます。 セキュリテイー的にも、いくつかにわけてあると安心なのですが、どのようにひとつに読み込んでいけばよいのでしょうか? ひとつがおわったらどんどん指定した外部swfムービーを流していきたいのです。loadMovieや、unloadMovieなどを使うのでしょうけれど、一つ終わったら次へどんどん再生していきたいのです。どうしたらよいのでしょうか。。。お願いします。

    • ベストアンサー
    • Flash
  • 外部ムービー読込み後 AS が動きません

    どなたかお教え下さい。 _root上のMCに外部swfを読み込んだとします。 その読み込まれたswf上のムービーの途中でASでストップstop();、を 入れて途中で一度とめるようにしてありますが、止まりません。 プログラムの知識がないのでずっと悩んでいます。 よろしくお願いいたします。 ■現状■ set_mcという名のMC上に、同じ階層にある01.swfを読み込む。 現在テスト用に、読み込む側は読込みだけ、読み込まれる01.swfは 10フレーム中の5フレーム目にキーフレームをつくり アクションで this.stop(); とだけ書いてあります 読込み側 _root.set_mc.loadmovie("01.swf"); _root.set_mc._lockroot = true; 読み込まれた01.swfの5フレーム目 this.stop(); ------------------------ 01.swf のみならばちゃんと止まるのですが読み込まれると とまりません。非常に初歩的なことかもしれませんが、 どうかよろしくお願いいたします。

    • ベストアンサー
    • Flash
  • 外部swfのラベル移動

    FLASH MX2004で作成しています。 main.swf上のload_mcのレベル0に、外部swfのA.swfを読み込んでいます。 #main上のフレーム this.load_mc.loadMovie("A.swf", 0); A.swfが終わると同時に、main.swf上のload_mcのレベル1に、外部swfのB.swfを読み込みます。 #A.swfの最終フレーム stop(); _root.load_mc.loadMovie("B.swf", 1); ここまではできています。 その後、B.swf内のcontentsというMC内のラベルをlabel2に移動させたいのです。 #A.swfの最終フレーム stop(); _root.load_mc.loadMovie("B.swf", 1); _root.load_mc.contents.loadMovie("label2"); これができません。 _root.load_mc.contents.loadMovie("label2"); _root.contents.loadMovie("label2"); _root.load_mc.loadMovie("label2"); load_mc.contents.loadMovie("label2"); contents.loadMovie("label2"); なども試してみましたが、うまくいきません。 わたしの頭ではこれが限界です。 ぜひともお力お貸しください!

  • ムービークリップ内に空ムービーを置いて外部SWFをロードするやり方

    ムービークリップ(menu1)このムービーはシーン1に設置してあり、動きはクリックすると右から左に引き出す感じのナビゲーションにしてあります。 それがmenu1,menu2,menu3とありそれぞれ再度押すと元の場所にもどります。 ここまでは完成しているのですが、このmenu1,2,3をそれぞれ押して引き出した後にその引き出した画面にコンテンツを外部swfでロードさせたいのですが、まったく表示されず白い画面のままです。 this.stop(); if(this.onFlag == 0){ //↑左にコンテンツをopenさせ元の位置に戻らぬようストップ //↓menu1外部charch読み込みswf_charchは空ムービー swf_charch.loadMovie("charch.swf"); } このスクリプトをムービークリップmenu1のフレームに書き込んでます。 空ムービー(swf_charch)をつくりmenu1に配置して、インスタンス名もswf_charchにしてあります。 もしかして、ムービークリップ内に空ムービーを入れ子にして外部swfの読み込みは不可能なのでしょうか? それともスクリプトの記述がloadMovieではなく別のスクリプトなのでしょうか? 説明が下手で分かりづらいと思いますが、分かる方いらっしゃいましたら宜しくお願いいたします。

  • 読み込まれた外部ムービーからのコントロールについて

    FLASHでは、 loadMovie(" .swf", ); で外部ムービーを任意の場所に読み込むことができます。この方法を使用して、ローカルにあるプロジェクタ(exe)にネット上に用意したFLASHファイル(swf)を読み込んでいますが、この時、下記のようなことは可能でしょうか。  1. 読み込まれるFLASHファイル(swf)は10フレーム用意されているが、単体で再生すると5フレーム目にあるgotoAndstop(1)というフレームアクションで、6フレーム以降は再生できない。しかし、プロジェクタ(exe)に読み込むことによって6フレーム目から再生できる。  2. 読み込まれたFLASHファイル(swf)からプロジェクタ(exe)のフレームをコントロールする。 使用ソフトは、FLASHMXです。よろしくお願いします。

    • ベストアンサー
    • Flash
  • loadMovieで特定のフレームを表示したい

    お世話になっております。 loadMovieで別のswfを読み込むことができますが、読み込んだファイルの特定のフレームを表示させたいのです。 たとえば、a.swfにb.swfをloadMovieします。 a.swfには3個のボタンがあり、それぞれがb.swfの1フレーム、10フレーム、20フレームに対応します。 ひとつのボタンに、 on (release) { this.loadMovie("b.swf"); this.gotoAndStop(10); } としても表示されないのはなんとなく理解できますので、 a.swfにムービークリップ(インスタンス名load_mc)を作り、その中にロードするようにし、さらにa.swfの5フレーム目にload_mcの10フレーム目を表示するように書きました。 ボタンに on (release) { this.load_mc.loadMovie("b.swf"); this.gotoAndStop(5); } 5フレーム目に this.load_mc.gotoAndStop(10); やはり、うまくいきません。 私の考え方が悪いのでしょうか? どうすればいいですか? どなたかよろしくお願いします。m(__)m WinのFLASH8使用です。

    • ベストアンサー
    • Flash
  • swf連続再生・2通り作ったのですが...

    すいません、以前swfの連続再生のことで質問させてもらったのですがお礼をさせてもらったあと、2通りのスクリプトで作ってみたのですが、うまくうごかないのです。 何が間違っているのか検討もつかずここに質問させてもらいます。 まずファイル構成は メインのseries.swfを埋め込んでいるhtml └flash_series(フォルダ名) ├series.swf(メインswf:読み込むswf)   ├first.swf (この順で再生↓、以下のswfの最終キーフレームにstop();を記述しています。)   ├second.swf   ├third.swf   ├fourth.swf └fifth.swf で、series.swfのステージに置いた空ムービークリップ「series_mc」にfirst.swf~fifth.swfを読み込み、swfの最終フレームにきたら次のswfを再生という感じで、以下のように組みました。 空ムービークリップ「series_mc」に記述しました。 ---------------------------------------------------------------- onClipEvent (load) { fileArr = new Array(); fileArr[0] = "flash_series/first.swf"; fileArr[1] = "flash_series/second.swf"; fileArr[2] = "flash_series/third.swf"; fileArr[3] = "flash_series/fourth.swf"; fileArr[4] = "flash_series/fifth.swf"; cnt = 0; series_mc.loadMovie(fileArr[cnt]); } onClipEvent (enterFrame) { if (series_mc._totalframes>=2 && series_mc._currentframe == series_mc._totalframes) { if (cnt<fileArr.length-1) { // cntに1を加算 cnt++; } else { cnt = 0; } series_mc.loadMovie(fileArr[cnt]); } } ---------------------------------------------------------------- です。もう一つは連番タイプで メインのseries.swfを埋め込んでいるhtml └flash_series(フォルダ名) ├series.swf(メインswf:読み込むswf)   ├no001.swf (この順で再生↓、以下のswfの最終キーフレームにstop();を記述しています。)   ├no002.swf   ├no003.swf   ├no004.swf └no005.swf で、これもseries.swfのステージに置いた空ムービークリップ「series_mc」にno001.swf~no004.swfを読み込み、swfの最終フレームにきたら次のswfを再生という感じで、以下のように組みました。 空ムービークリップ「series_mc」に記述しました。 ---------------------------------------------------------------- var num_swf = 5; //SWFファイルの個数 var load_file = new Array(); for (i = 0; i < num_swf; i++) { if (i < 10) { load_file[i] = "flash_series/no00" + i + ".swf"; } else if (i < 100) { load_file[i] = "flash_series/no0" + i + ".swf"; } } var i = 0; this.series_mc.loadMovie (load_file[i]); this.series_mc.onEnterFrame = function() { if(2 <= series_mc._totalframes && series_mc._currentframe <= series_mc._totalframes){ if(i<num_swf){ this.series_mc.loadMovie (load_file[++i]); } } } ---------------------------------------------------------------- と組んだのですが両方とも一つも読み込まれません、何が悪いんでしょうか?ご協力お願いします。

    • ベストアンサー
    • Flash
  • 外部データの読み込みが完了した後に再生

    メインのswf内に「loadMovie」を使って、 外部swfを3つ読み込んでいます。 top.swf タイムライン1フレーム目  stop();  navi.loadMovie("navi.swf");  logo.loadMovie("logo.swf");  bgmplayer.loadMovie("bgm.swf"); bgm.swf自体がxmlファイルを読み込んだり、 外部からの画像を読み込んだりしているせいか、 こちらが表示されるまで、top.swfにあるムービーがぎこちない 動きをしてしまいます。 このような場合、どういった対応をすればよろしいのでしょうか? ※nowloadingをつけてみましたが、解消されませんでした。 (↑つけかた(書き方)が悪かったかもしれませんが…) どなたかご教授お願いいたします。

    • ベストアンサー
    • Flash
  • 外部SWFを読み込み、指定したラベルから再生したい。他

    Flash8を使用し、Win/Mac両方で作業しています。 ActionScriptは基本をどうにか理解しつつあるレベルです。よろしくお願いします。 「base.swf」「submovie.swf」の2つのファイルを用意し、 base.swfのステージに、 ・空のムービークリップ(インスタンス名:main) ・ボタン(インスタンス名:buttom) を配置し、ボタンに下記アクションを記述しました。 on (release) { loadMovie("submovie.swf", "main"); } この記述で、「submovie.swf」が「main」に表示されるのを確認しました。 そして、ここからが質問なのですが、 1.どこにも「stop」アクションを仕込んでいないはずなのに、LoadMovieで読み込んだ「submovie.swf」が1フレーム目で停止してしまいます。 何か別の記述が必要なのでしょうか。 2.ボタンクリックにより、「submovie.swf」内の指定したフレームを再生したいのです。 「submovie.swf」には「first」「second」「third」の3つのラベルを設定しています。 たとえば、「buttom」インスタンスをクリックした際に、「submovie.swf」内「second」ラベルを再生したい場合、どのように記述すればよろしいでしょうか。 また、もし上記の条件でラベルが使用できない場合、何か代替となる方法があるでしょうか。 不足している情報があれば追記します。よろしくお願いいたします。

    • ベストアンサー
    • Flash
  • 外部ファイルのフレームラベルにリンクをさせたい。

    こんにちわ。 色々、探してみましたが、頭がこんがらがってしまい、時間ばかりが過ぎて行くので質問させていただきます。 外部ファイルのフレームラベルにリンクをさせたいのですが、どなたかご存じの方ご教授ください。 flame.swfを読み込んだときは自動的にcontents1.swf→contents2.swfと進み、ボタンをクリックすると 指定されたフレームラベルにリンクさせたいのです。 色々試してみたのですが、うまく外部ファイルが読み込めなかったりボタンが機能しない状態です。 flame.swf contents1.swf contents2.swf flame.fla  kazari   ボタンの飾りグラフィクが置いてある。  button1-1 1-1(contents1.swf内1-1フレームラベルにリンクするボタン)  button1-2 1-2(contents1.swf内1-2フレームラベルにリンクするボタン)  button2-1 2-1(contents2.swf内2-1フレームラベルにリンクするボタン)  button2-1 2-2(contents2.swf内2-2フレームラベルにリンクするボタン)  mytarget mytarget(movie clip。ここにcontents1.swfもしくはcontents2.swfを読み込ませる) 1 フレーム目のアクションスクリプトに stop(); button1-1のボタンスクリプトに on (release) { gotoAndPlay("1-1"); /コメント:フレームラベル1-1にボタン飾りがあるため同じシーン内の「1-1」に行くように/ } 1 フレーム目のmytargetアクションスクリプトに onClipEvent (load) { loadMovieNum("contents1.swf", 1); } フレームラベル1-1のmytargetアクションスクリプトに onClipEvent (load) { this.mytarget.loadMovie("contents1.swf" , 1); flg='contents1.swfのフレームラベル'; } contennts1(2).fla 1フレーム目のアクションスクリプトに stop(); gotoAndPlay(flg); 環境:Max OS 10.3.6 Flash8

    • ベストアンサー
    • Flash

専門家に質問してみよう