- 締切済み
flashで、レベルの違うボタンから外部swfファイルの読み込み
flash初心者のkiyuです。 メインのflashサイトに外部swfファイルを読み込みたいのですが、上手くいきません。 1.mcはrootにおいてあります。 2.ボタンは2つあり、1つはおなじrootの同じステージ内。そして、2つ目のボタンは違うレベルにあります。 3.同じrootにあるボタンは読み込み可能。でも、違うレベルにあるボタンは読み込み不可。 コードは、 on(release){ _root.gotoAndPlay("フレーム名"); _root.mcのインスタンス名.loadMovie("外部ファイル名.swf"); } です。 いろいろ思考錯誤をくりかえしたのですが、どうにも上手くいきません。。。 よろしくお願いします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
> _root.gotoAndPlay("フレーム名"); これが何を意味している物か(ご質問の本題と関係があるのかないのか),よくわかりませんので, > _root.mcのインスタンス名.loadMovie("外部ファイル名.swf"); に関してのみ回答します。 //////////////////////////////////////////////////////// 結論は, _root.mcのインスタンス名.loadMovie("外部ファイル名.swf"); ↓ 変更 ↓ _level0.mcのインスタンス名.loadMovie("外部ファイル名.swf"); とすれば良いと思います。 私の場合は, まず,次のような3つのSWFを用意しました。 任意のフォルダ ├ aaa.swf (_rootになるファイル) ├ bbb.swf (他のレベルに読み込むファイル) └ ccc.swf (MCにロードするファイル) 「aaa.swf」には, 「ccc.swf」を読み込むためのMCインスタンス名「myMC」を作成, 「bbb.swf」には, 「ccc.swf」を「myMC」に読み込むためのボタンを作成, 「ccc.swf」は, 単なるステージいっぱいの青色の塗りだけを作成しました。 3つのSWFとも1フレームのみです。 そして, 「aaa.swf」の フレーム1 には, --------------------------- loadMovieNum("bbb.swf", 1); --------------------------- と書いて,「bbb.swf」を レベル1 にロードするようにし, 「bbb.swf」のボタンには, --------------------------- on (release) { _level0.myMC.loadMovie("ccc.swf"); } --------------------------- と書きました。 そして, それぞれのファイルを用意した状態で, 「aaa.swf」を開き, レベル1 に自動で読み込まれた「bbb.swf」のボタンをクリックすると, 「aaa.swf」にある「myMC」にはちゃんと「ccc.swf」が読み込まれましたよ。 //////////////////////////////////////////////////////// 以下は別法と,半分以上私の疑問です。 このコミュニティでも, たまにレベルの使用で質問をされる方がいらっしゃいます。 「_level1」 などと検索してもらえばいくつかの質問が検索されると思います。 教えて!goo の検索 URLしか書けないもので, 教えて!goo のみのURLですが↓。 http://oshiete.goo.ne.jp/search/search.php?status=select&MT=_level1&ct_select=1&ct0=205&ct1=221&ct2=564 (なぜか私が絡んだものが多い...(笑;)) 今回のご質問とは全く違うことに関しての質問をされていることがほとんどですが, そもそもレベル (loadMovieNum) を使う必要はあるのでしょうか? いつも疑問に思います。 レベルを使うから, レベル概念の理解をしなければならなくなったり, スクリプトが複雑(&怪奇)になってややこしくなる上に, 不可能なことや困ったことが色々出てくるのだと思います。 今回のご質問の場合は特に, 「mcのインスタンス名.loadMovie();」 をすでにちゃんと使われているのですから, 最初から ムービークリップ に読み込方法に統一すれば良いのではないかと思います。 親SWFの一番上のレイヤーのステージの左上のコーナーに, 小さな透明なムービークリップを作成して, その ムービークリップ に 「mcのインスタンス名.loadMovie();」 で, SWF をロードすれば良いだけですよね。 そうすれば,後にも, 「座標移動」や,「深度変更」や,「サイズ変更」などなど… も容易になりますし, このご質問自体が発生することもないはずです(多分...)。 それにまた, 次期ActionScript であるActionScript3 では,レベルという概念自体が消えますよ。 <AS3で無くなってしまうものの主なリスト> http://web.mac.com/ymori.com/iWeb/AS3/AS3Blog/2E5CD9F2-675A-4CAA-A9F6-766C45D1704E.html (上記URLの 【ActionScript 2.0 Migration】 はリンクが切れています。 http://livedocs.adobe.com/flex/2/langref/migration.html ) 普通の人は, おそらくレベルが消えても全く困らないと思います。 私も全く困りませんし,消えてくれる方がスッキリして良いです。 何か特別な意味がある人にとってはレベルがなくなると困るのだとは思いますけど...。 長年Flashとは付き合っていますが, いくら考えてもレベルを使う特別なメリットというものが思い付きません。 何かあるのだろうか??? 気にはなりますがわかりません。 レベルを使って困ることがなければ, 別に使っても今の所は問題がないと思います。 しかし,レベルを使って困ることが起こるのであれば, 最初から使わなければ良いと思います。 それが一番だと私は思います。 ※--- 本題とは全く関係ありません(余談) --- ついでに…,です。 レベルほど利用価値がないものではありませんが, レベルとよく似た厄介なものに「シーン」があります。 「シーン」は一見便利ですが, 複雑なことをしようとすればするほど 厄介なことが起こります。 「シーン」もしかりです。 「シーン」を使って困ることがなければ, 別に使っても問題がないと思います。 しかし,「シーン」を使って困ることが起こるのであれば, 最初から使わなければ良いと思います。 これまたムービークリップを使えば良いだけですね。