• ベストアンサー

外部swfファイルを読み込み任意のフレームにジャンプしたい

重複質問でしたらすみません。。。 _rootに「メニュー」というムービークリップをおきました。 その中にボタンをいくつか配置してある状態です。 ボタンを押すと_rootへ外部swfを読み込むようにし、loadMovieを使い読み込みには成功しました。 その際に ボタン1⇒外部ファイル1のフレーム1 ボタン2⇒外部ファイル1のフレーム10 というように、ボタンによって同じ外部ファイルの違ったフレームへジャンプさせたいのですがうまくいきません。 このような場合はどうしたらよいのでしょうか。 アドバイスがありましたらお願いします。

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

  • ベストアンサー
noname#35109
noname#35109
回答No.2

私もしばらくどうやったらできるのか考えていました。 普通に実験してもうまく行きませんし。 しかし,制約が付きですが,なんとかできます。 読み込む側のボタンのスクリプト↓。 ------------------------------ on (press) { loadMovie("3章テスト.swf?frm=10", "_root"); } ------------------------------ swf の後に ? と 変数名(frm)=値(10) を付け加えます。 フレーム10 に行かせるボタンの場合です。 読み込まれる側(3章テスト.swf)の フレーム1 のスクリプト↓ ------------------------------ // とりあえずストップ this.stop(); // 1フレーム進む時間ごとに毎回{ }内を実行 this.onEnterFrame = function() { // もし全てのロードが完了したら if (this.getBytesLoaded()>=this.getBytesTotal()) { // ムービーを変数フレームに進める this.gotoAndPlay(frm); // この onEnterFrame を削除 delete (this.onEnterFrame); // ロード未完了の場合は ストップ を継続 } else { this.stop(); } }; ------------------------------ こんな感じです。 ただし,制約として,これはムービープレビューやスタンドアローンプレーヤーでは検証できません。 つまり,使えません。 上の場合,変数をGETで渡していますが,POSTで渡しても同様です。検証できません。 サイトによっては,アップしないと検証できないと書いてあるところもありますが, 私の環境では,ブラウザ(IE)でswfファイルを開くか, ブラウザでswfと同時にパブリッシュされたHTMLを開くとローカルで検証できました。 _root (_level0) に読み込んで, 任意のフレームにジャンプということは普通はしません。 _root (_level0) に読み込むと言うことは,親元のファイルのプロパティなど親の全てがなくなります。 _root (_level0) でなければ,親内に子を読み込めるので, 普通に変数も渡せますし,読み込み待ち処理もできます。 しかし _root (_level0) だと,その両方が素直にできなくなるので,大変やっかいです。 やっかいのダブルパンチです。 上記スクリプトの説明ですが, まず,ボタンのスクリプトで, 「3章テスト.swf」をロードすると同時に,frm=10 という変数&値を「3章テスト.swf」に渡します。 ロードされた側は表示された時点でまだロードは完了していません。 ですから,いきなり フレーム10 に goto などと命令されても,そんなフレームはないのでどこにも行けません。 なので, 「3章テスト.swf」のフレーム1に 「ロードが完了次第,フレームfrm つまり フレーム10 に goto しなさい」と書いてあります。 これでうまく行くと思います。 なお,ご存じだとは思いますが, アップする場合,「3章テスト.swf」というファイル名は使えません。 「test_chapter3.swf」など半角英数文字のファイル名にしてくだい。 アップせずに,ローカルで使用する場合はブラウザに表示させるしかありません。 もしスタンドアローンプレーヤーやプロジェクタ(EXEファイル)にパブリッシュして使用する場合は, 上記方法ではうまく行かないと思います。 なんとか,変数を別の物を経由して渡さないとなりません。 別の物を経由する方法で, 今,思いつくものは親ムービーから SharedObject で,sol ファイルに変数を保存し, その solファイルを「3章テスト.swf」から読みに行き,ロードを待ってgotoするという方法です。 「SharedObject.getLocal」 http://www.fumiononaka.com/TechNotes/Flash/FN0204003.html しかし, 親の _root にロードした子に,SharedObject を使って変数を渡すなどと言うことは, それこそ,普通は絶対にしない方法ですし, 今は,考えてみただけで実際に作って検証したわけではありません。 「親からsolを保存→瞬時に子からsolの読み込み」 ですからね,普通はしません。 もし,そういう,さらに超変わったことをしたい場合で,なおかつ SharedObject の使い方などがわからない場合は, 補足してください。 また時間がかかるかもしれませんが,考えて実験してみたいとは思います。 考えても実験失敗で,回答できない可能性もありますけどね。

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

その他の回答 (1)

  • BlurFiltan
  • ベストアンサー率91% (1611/1754)
回答No.1

「ボタンを押すと_rootへ外部swfを読み込むようにし、」 と書かれている点を考えると、外部swfが表示されたときには、その元あったボタンは消えると思いますが, そういう状態で合っていますでしょうか? _rootへ読み込む場合は、 ボタンによって同じ外部ファイルの違ったフレームへジャンプさせることは無理かと思われます。 ・ できれば、書かれた loadMovie の部分のスクリプトだけでも良いので提示してください。 ・ また、読み込む場所は _root 以外でも良いのかどうかを回答してください。 ・ また、Flashのバージョンを書いてください。 答えられる範囲でかまいませんので、上記3点の補足説明をおねがいします。

lyukarin
質問者

補足

回答ありがとうございます。 元にあったボタンは消える状態です。 3点補足します。 スプリクトについては、ボタン1⇒フレーム1の状態 on (press) { loadMovie("3章テスト.swf", "_root"); } を記述してあるだけに今はなっています。 (色々試したものは消えてしまいました。。。) 変数をつけてみたらと思いやってみたり、外部ファイルをシーンに分けてやってみたり色々してみましたが、記述方法が適切でないせいか失敗しています。(スプリクトは初心者です) (何がよかったのかシーン2へジャンプできた時がありました。しかし、他のシーンへ飛べないので断念しました。) また、読み込む場所はできれば_rootにしたいと思います。 Flashのバージョンは8proを使っています。 お願いします。

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

関連するQ&A

  • loadMovieで外部swfの読込みについて

    現在、外部swfを連続で再生させるフラッシュを作成中です。 以下の方法で実現しています。 ------------------------------------------------- 親SWFの_rootに,例えば「loadMC」というインスタンス名のムービークリップを作ります。 このMCは小さくて透明のMCか,中に何も入っていない空のMCが良いと思います。 そして,親SWFのフレームのスクリプトに _root.loadMC.loadMovie("movie1.swf"); と書けば,「loadMC」というインスタンス名のムービークリップに「movie1.swf」が読み込まれます。 またはボタンにスクリプトを書いて,ボタンで読み込みをさせても良いです。 そして,「movie1.swf」の最終フレームに, _root.loadMC.loadMovie("movie2.swf"); と書いておきます。これで同じ「loadMC」に「movie2.swf」が読み込まれます。 同じ所に新たなムービーを読み込むと自動的に前のムービーは unload されるので, unloadMovie(); は必要ありません。 「movie2.swf」の最終フレームには _root.loadMC.loadMovie("movie3.swf"); 「movie3.swf」の最終フレームには _root.loadMC.loadMovie("movie4.swf");   …  … ------------------------------------------------- 作成後のプレビュー又はswfをダブルクリックなどで直接表示させると正常に表示されます。 しかし、HTMLに埋め込むと真っ白な状態でまったく表示されません。 調べているのですが原因がわかりません。 どなたかご教授のほど宜しくお願い致します。

    • ベストアンサー
    • Flash
  • 外部swfのフレームを指定して読み込み

    あるムービークリップ(mc1とします)に外部swf(001.swfとします) を読み込むことはできるのですが、 mc1に001.swfを読み込み、001.swfの50フレーム目から再生ということは可能でしょうか。 いろいろと調べたのですが、どうしてもうまくいきませんでした。 ボタンを作りボタンを押したら読み込み50フレーム目から再生という指示を書いたのですが、、、 on (press) { _root.mc1.loadMovie("top.swf"); _root.mc1.gotoAndPlay(50); } 1フレーム目から再生されてしまいます。

  • ボタンを押した時、外部swfを読み込み

    ムービークリップ内のボタン(写真のサムネイル)を押した時、外部.swf(写真やコメントを書いたswf)を読み込もうとしております。 _rootに空のムービークリップを配置し、インスタンス名を load_mcと指定。 _rootに配置したムービークリップの中に配置してあるボタンに on (release) { this._parent.load_mc.loadMovie("comment.swf"); } と書きました。しかしボタンを押してもcomment.swfが表示されません。 解決方法をお教えください。よろしくお願いいたします。

  • ムービークリップ内に空ムービーを置いて外部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ではなく別のスクリプトなのでしょうか? 説明が下手で分かりづらいと思いますが、分かる方いらっしゃいましたら宜しくお願いいたします。

  • loadMovieのswf読み込み時の一瞬

    制作環境  windows vista flash CS3 Professional ------------------------- flash初心者です。 loadMovieで外部swfを読み込む前に一瞬_rootの画像が表示されてしまうことで困っています。 作業としては、 top.swfにメニューをつけ、リンクを貼って loadMovieでswfを切り替えています。 以下3つは読み込む外部ファイルです。 ・about.swf ・catalog.swf ・service.swf top.swfに配置したメニューボタン(about、catalog、service)に下記の記述をし、 ■aboutボタン on (release) { _root.moviearea.loadMovie("about.swf"); } ■catalogボタン on (release) { _root.moviearea.loadMovie("catalog.swf"); } ■serviceボタン on (release) { _root.moviearea.loadMovie("service.swf"); } ボタンを押すと_rootにそれぞれちゃんと読み込まれるまではいきました。ですがその際、例えばabout.swfが読み込まれた後に他のボタンを押して別のswfファイルを読み込む一瞬、_rootに配置してある画像がちらっと表示されてしまいます。 色々調べて外部swfファイルの背景の問題かもしれないと思い、ドキュメントサイズと同じサイズの背景色で塗りつぶしたムービークリップを配置するなどしてみましたが、やはり一瞬ですが_rootの画像が見えてしまいました。 外部ファイルから外部ファイルへスムーズに切り替えができるようにするにはどのようにしたらよいのでしょうか。 どなたかお力をお貸しくださいませんか? よろしくお願いします。

    • ベストアンサー
    • Flash
  • 外部swfの読込について

    1枚のFlashに二つの外部swfを読み込む方法を教えて下さい。 今参考書を見ながらやってみたのですが外部ファイルが読み込まれていないようで 書き出したswfファイルには何も表示されません。 試した方法ですが・・・ 外部swfファイル読込用ムービークリップを作成、 オブジェクトアクションを挿入 --------------------------------- onClipEvent (load) { function Load (file) {  this.loadMovie (file);   } } --------------------------------- フレームを作成し下記アクション挿入 --------------------------------- contents_mc.Load("about.swf") --------------------------------- 使用ソフトはFlash5です。 どうぞ宜しくお願いします。

    • ベストアンサー
    • Flash
  • 外部swf(子swf)から、親swfの特定「シーン/フレーム」にリンクをしたい。

    アクションスクリプト初心者です。お力をお貸し下さい、どうぞよろしくお願いいたします。 「親swf」ファイルに、「子swf」ファイルを読み込み、「子swf」のリンクボタンから 「親swf」ファイルの指定「シーン/フレーム」にリンクをしたいのですが上手くいきません。 「親」ファイルのタイムライン上に配置した「ムービークリップ(インスタンス名:tv)」を 外部swf「子swf」に差し替えるスクリプトは ---------- loadMovie("子swf", "tv"); stop(); ---------- と、記述して上手く動いてますが、 「子swf」のリンクボタンから「親swf」の指定「シーン/フレーム」にリンクさせるにはどの様なスクリプトを書けば良いのか?アドバイスをお願いいたします。 ※「親swf」の指定「シーン/フレーム」とは、「子swf」を読み込む前の「シーン/フレーム」 に戻したいのです。 感覚として下記のようなスクリプトを書きましたが、「親swf」の最初のシーン/フレームに 戻ってしまいます。 リンクボタンに記述 ---------- on (release) { loadMovieNum("親swf", 0); _root.gotoAndPlay("指定シーン",フレーム番号); } ---------- どなたか詳しい方アドバイスよろしくお願いいたします。

    • ベストアンサー
    • Flash
  • 外部swfを読み込んだときのずれ

    flashのファイルにムービークリップ(a_mc)を置き、そこに外部からswf(b.swf)を読み込みたいのですが、どうしてもそのムービークリップに重ならず、ずれてしまいます。メインの画面(540pix×540pix)の左上にくっついてしまう状態です。a_mcとb.swfのサイズを同じにして(225pix×300pix)基準点を左上にしてみてもだめです。 フレームアクションはこんなかんじです。↓ loadMovie("b.swf", "a_mc"); 外部から読み込んだファイルの位置を座標指定できるような方法など、わかる方がいらっしゃったら、よろしくお願い致します。

  • 外部swfファイルの読み込みで、ムービークリップを作成して、その任意の

    外部swfファイルの読み込みで、ムービークリップを作成して、その任意の位置にswfファイルを表示させる方法を教えてほしいです。 http://okwave.jp/qa/q1729863.html このサイトを参考にして、 _root.createEmptyMovieClip("load_mc", 1); load_mc.loadMovie("http://***/***.swf"); load_mc._x =0; load_mc._y =100; としてみたんですが、表示されませんでした。

  • 外部swfファイルの閉じ方

    メインに"stage2というmcを配置し、123.swfを読み込むボタンを配置しました。 ボタンスクリプト: on (release) { _root.construction(); loadMovie("123.swf", "_root.stage"); _root.stage.swapDepths(5); for (i=1; i<=4; i++) { _root["m_"+i]._visible = false; } 開いた外部swfファイルを閉じる設定をしたいのですが、どのようにすればよいでしょうか。 よろしくお願いいたします。

    • ベストアンサー
    • Flash