- ベストアンサー
外部ムービーの読み込みについて
- 外部ムービーの読み込み方法について教えてください。
- kiso1.exeを開くことで、kiso1.exeのレイヤー2とレイヤー3にkiso2.swfを読み込み、kiso2.swfのボタンアクションによってnet1.swfを読み込む方法を知りたいです。
- 使用ソフトはFLASHMXです。ローカルのMy Documentsフォルダの中にkiso1.exeとkisoフォルダ。kiso1.exe内でkiso2.swfを読み込み、kiso2.swf内でnet1.swfを読み込むこともできるのでしょうか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
#1&2 です。 #2の補足です。kiso/kiso2.swf が読み込まれない件に関しては,#2以上に書くことはできません。 この補足は,#2の後半部分 >> ただただただ…ただし。 >> 「kiso2.swf」は同じ物ですよね。 ~省略~ >> あったら,当然,「usiro」ではなく,「mae」にswfがロードされますので,要注意です。 の補足です。 #2の最後に上記のように書きましたが,_root から書くと,そうなってしまいます。 ですから,_root の書き方をやめて,相対パスで書けば, 「usiro」は「usiro」,「mae」は「mae」にそれぞれ違うswfがロードされます。 ---kiso/kiso2.swfのボタン------------------ on (release) { loadMovie("http://~/net1.swf", this); } -------------------------------------- ---ネット上net1.swfのボタン---------------- on (release) { loadMovie("http://~/○○.swf", this); } -------------------------------------- ---ネット上○○.swfのボタン---------------- on (release) { loadMovie("http://~/net1.swf", this); } -------------------------------------- です。 ターゲットは "this" ではなく this です。"" を付けたらうまく行きませんでした。 ターゲットの "" についてですが,本家, http://www.macromedia.com/jp/support/flash/ts/documents/fl0158.html の例 例:"_root.targetClip"ターゲットパスにムービーをロードする。 loadMovie ("http://some.url.com/somemovie.swf", "_root.targetClip") ともあるように,"" を付けるのが正式かと思っていました(います)が, 上で示した3つの場合は, "" があるとダメのようです。 なぜかという理由はすみませんがわかりません。
その他の回答 (2)
#1です。 >> loadMovie("kiso/kiso2.swf", _root.mae); の_root.maeに""が付いていないのは、 すみません。正確には, -------------------------------------- loadMovie("kiso/kiso2.swf", "_root.mae"); loadMovie("kiso/kiso2.swf", "_root.usiro"); -------------------------------------- ということになります。普通は, "" を付けますね。付け忘れです。 >> 希望するようにならなかったことは、動作で、 >> kiso1.exe を開く → ※A と ※B に kiso2.swf をロード。 ※ア >> kiso2.swf ボタンクリック → net1.swf をロード。 ※イ ※イができなかったのは,※アができなかったので,確認できなかったと解釈してよろしいですよね。 ※アに関しては,#1で書いた >> kiso1.exe の フレーム1(?)に >> -------------------------------- >> loadMovie("kiso/kiso2.swf", _root.mae); >> -------------------------------- >> と書けば,mae に kiso/kiso2.swf がロードされます。 の部分です。 「フレーム1(?)に…」と書いていますが,アニメーションの構造によって,フレーム1かどうかが変わるので (?) を付けています。 当たり前のことと言えば当たり前ですが, 「_root.mae」がすでに存在していて(ロードされていて(表示されていて)), その「_root.mae」に「loadMovie();」をかけないと,ムービーはロードされません。 「_root.mae」がフレーム15から登場するのであれば,フレーム15以降に「loadMovie();」が実行されなければなりません。 ですから,普通は,「_root.mae」がフレーム15フレームから登場するのであれば,フレーム15のタイムラインに, -------------------------------------- loadMovie("kiso/kiso2.swf", "_root.mae"); loadMovie("kiso/kiso2.swf", "_root.usiro"); -------------------------------------- を書けば良いのです。 しかし,このスクリプトが「_root.mae」の登場する,0.000001秒前にでも実行されてしまったら, 実行するターゲットが存在しないことになり,何も起こりません。 すごく無難にするなら,「_root.mae」の登場するフレームの次のフレームに, 上記スクリプトを書いてみてください。 もし,そもそも「kiso1.exe」が1フレームしかない場合は,2フレームに増やして, ------------------------------------- stop(); loadMovie("kiso/kiso2.swf", "_root.mae"); loadMovie("kiso/kiso2.swf", "_root.usiro"); ------------------------------------- とすれば大丈夫だと思います。 または,「_root.mae」と同時に登場するムービークリップを作って,そのムービークリップに, ------------------------------------- onClipEvent (load) { loadMovie("kiso/kiso2.swf", "_root.mae"); loadMovie("kiso/kiso2.swf", "_root.usiro"); } ------------------------------------- と書いても,うまく行く場合が多々あります。 実際に,My Documents に書かれたようなswfやexeを作り, ネット上にも「net1.swf」などをアップして,試してみました。 すべて上手く行きました。 ただただただ…ただし。 「kiso2.swf」は同じ物ですよね。 「usiro」と「mae」の2箇所に読み込むのも,同じ物です。 つまり,「usiro」に読み込んだ,「kiso2.swf」のボタンに, --------------------------------------- on (release) { loadMovie("http://~~/net1.swf", "_root.mae"); } --------------------------------------- と書いてあったら,当然,「usiro」ではなく,「mae」にswfがロードされますので,要注意です。
えーっと… すんごい話がややこしいですね。でも,スクリプトは簡単です。 構造から↓。 ---------------------------------------------------- マイコンピュータ ┗My Documents (フォルダ) kiso1.exe (ファイル) ┃ ├レイヤー3…MC(インスタンス名:mae) ※A ┃ ├レイヤー2…MC(インスタンス名:usiro) ※B ┃ └レイヤー1…MC(インスタンス名:無) ┃ ┗kiso (フォルダ) ┗kiso2.swf (ファイル) ├レイヤー3…MC(インスタンス名:無) ├レイヤー2…MC(インスタンス名:無) └レイヤー1…ボタン(インスタンス名:無) ---------------------------------------------------- ネット(Web)上 ┗http://~~/○○ (フォルダ) ┗net1.swf ├レイヤー2…ボタン(インスタンス名:無) └レイヤー1…ボタン(インスタンス名:無) ---------------------------------------------------- 次に,動作↓。 kiso1.exe を開く → ※A と ※B に kiso2.swf をロード kiso2.swf ボタンクリック → net1.swf をロード net1.swf ボタンクリック → ○○.swfネット上の ○○.swf をロード ○○.swf ボタンクリック → net1.swf をロード という感じで良いですか? 理解するのも苦しいですが,よく説明されましたね。 以上を理解した(つもり)だけで,頭がぷよぷよになってしまいました。 まずは,「シンボル1」~「シンボルn」の名前は無視しましょう。 これはFlashの画像データや構造を管理するためのシンボル名で,スクリプトには一切関係ありません。 次に,レイヤーを無視しましょう。 これは,表示される上下関係ではとても重要ですが,今回の場合スクリプトには関係しません。 それで,※A と ※B があるので,とりあえず ※B を無視します。 1.「※A の mae に,kiso/kiso2.swf をロードする。 」 kiso1.exe(_root) └mae ← ココに kiso/kiso2.swf をロード ですから, kiso1.exe の フレーム1(?)に -------------------------------- loadMovie("kiso/kiso2.swf", _root.mae); -------------------------------- と書けば,mae に kiso/kiso2.swf がロードされます。 _rootのフレームアクションなので _root.mae の _root. は無くてもかまいません。 この時点で,kiso/kiso2.swf は kiso1.exe(_root) から見ると _root.mae になっています。 ですから, 2.「kiso2.swf ボタンクリック → net1.swf をロード」 kiso1.exe(_root) └mae ← ココに net1.swf をロード ということになり, kiso2.swf のボタンには --------------------------------------- on (release) { loadMovie("http://~~/net1.swf", "_root.mae"); } --------------------------------------- ということになります。 以降,ターゲットは,ずっと「"_root.mae"」で良いことになります。 ※B の場合も同様に考えてください。 ずっと,「"_root.usiro"」で良いことになります。
お礼
お返事ありがとうございます。 説明不足のため大変お手数をおかけしましたが、詳しく教えてくださりありがとうございます。 御回答の方法でさせていただいた結果、希望するようになったことと、希望するようにならなかったことがありました。 そこで、問題解決とはあまり関係がないことかもしれませんが、まず少し訂正させていただきます。 構造で、 kiso2.swfは、レイヤー1がボタンではなく、レイヤー3がボタン。 net1.swfのレイヤー1は、ムービークリップ。 次に、希望するようになったことと、希望するようにならなかったことについて書かせていただきます。 希望するようになったことは、動作で、 net1.swf ボタンクリック → ネット上の ○○.swf をロード。 ○○.swf ボタンクリック → net1.swf をロード。 希望するようにならなかったことは、動作で、 kiso1.exe を開く → ※A と ※B に kiso2.swf をロード。 kiso2.swf ボタンクリック → net1.swf をロード。 また、質問にも書かせていただいたとおり、 kiso1.exe を開く → ※A と ※B に net1.swf をロードは、 _root.mae.loadMovie("http://*****/net1.swf"); loadMovie("http://*****/net1.swf", "mae"); loadMovie("http://*****/net1.swf", "_root.mae"); のいずれの方法でもできました。 最後に、上記のことに関連して、疑問を書かせていただきます。 もう少し詳しく理解したいのですが、教えてくださいませんか。 ・御回答のアクション loadMovie("kiso/kiso2.swf", _root.mae); の_root.maeに""が付いていないのは、loadMovieの場所の式がチェックされているからでしょうか。 ・loadMovieの場所を_root.maeとした場合、maeとした場合、式にチェックをした場合、チェックをしない場合の4通り行いましたが、kiso1.exe を開く → ※A と ※B に kiso2.swf をロード はできませんでした。この結果には、どのようなことが考えられるでしょうか。 よろしくお願いします。
補足
質問で、 "以外" を "意外" と変換する誤りがありました。訂正させていただきます。
お礼
お返事ありがとうございます。 また、お礼の言葉が遅れまして申し訳ございません。 まず、前回希望するようにならなかったことについて書かせていただきます。 御回答のとおり、 ※イができなかったのは,※アができなかったので,確認できなかった ということです。 次に、今回の御回答(No.2とNo.3)の方法でさせていただいた結果について書かせていただきます。 前回希望するようにならなかった※アと※イのどちらも解決しました。 御回答(NO.2)の時には、専ら※アについて御回答の方法でさせていただきましたが、希望するようになりませんでした。 御回答(NO.3)の時、※アを止め、※イについて御回答の方法でさせていただき、希望するようになりました。 その後、※アについていろいろ試みた結果、 loadMovie("kiso/kiso2.swf", _root.mae); または、 loadMovie("kiso/kiso2.swf", mae); という方法ではなく、 loadMovie("/kiso/kiso2.swf", _root.mae); または、 loadMovie("/kiso/kiso2.swf", mae); という方法によって希望するようになりました。 /があってもなくても相対パスの記述としては正しく、同じことだと思うのですが、解決したのでよかったです。 大変お手数をおかけしましたが、親切に対応してくださりありがとうございました。 また質問させていただいたときにはよろしくお願いします。
補足
"" を付け忘れる誤りがありました。訂正させていただきます。