質問: 外部ムービーの読み込みについて 特定のファイル(※1)を用意した上で、下記のことを行うには、どのような方法をとればよろしいでしょうか。 kiso1.exeを開くことで、kiso1.exeのレイヤー2とレイヤー3にkiso2.swfを読み込み、kiso2.swfのボタンアクションによってnet1.swfを読み込む。net1.swfのボタンアクションによって同じネット上にあるflashファイルを読み込み、またそのflashファイルのボタンアクションによってnet1.swfを読み込む。これらのファイルの中でkiso.exeの以外のものは、他人に作成させることも考えており、kiso1.exeに読み込ませるflashファイルのファイル名のみkiso2.swfと同じにすれば、kiso2.swfの設定(loadmovieのurlを変えるなど)によって読み込むflashファイルが管理外のネット上にあっても同様のことが行えるようにする。なお、kiso1.exeのレイヤー3に直接net1.swfを読み込ませることはできました。 使用ソフトは、flashmxです。よろしくお願いします。 ※1 ローカルのmy documentsフォルダの中にkiso1.exe(※2)とkisoフォルダ。kisoフォルダの中にkiso2.swf(※3)。管理するネット上にnet1.swf (※4)。 ※2 下のレイヤーからレイヤー1、レイヤー2、レイヤー3。レイヤー1は、名前がシンボル1のムービークリップ。レイヤー2は、名前がシンボル2で、インスタンス名がusiroのムービークリップ。レイヤー3は、名前がシンボル3で、インスタンス名がmaeのムービークリップ。 ※3 シンボルにインスタンス名がなく、レイヤー3のシンボルがボタンであること意外、kiso1.exeと同じ。 ※4 レイヤーが2までしかなく、レイヤー2のシンボルがボタンであること意外、kiso2.swfと同じ。
回答: #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がロードされますので,要注意です。