• ベストアンサー

外部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
  • 回答数1
  • ありがとう数0

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

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

前回のご質問に回答した者です。 _root.construction(); など意味不明な物をごちゃごちゃ書いても, 誰も理解できないだけです。 また, 質問の本文の 「メインに"stage2というmcを配置し、」と スクリプトの loadMovie("123.swf", "_root.stage"); が一致していません。 (この謎はしばらく考えて解けました。「"」 と 「2」 は同じキーですね。) 大きなお世話かと思いますが… ~~~ 質問の書き方例 ~~~ メインムービー _root のステージ上に "stage" というインスタンス名のムービークリップを配置し, ムービーに配置した別のボタンに次のようなスクリプトを書き,"stage" に外部swfファイルをロードさせました。 on (release) { loadMovie("123.swf", "_root.stage"); _root.stage.swapDepths(5); } ロードさせることはできたのですが,ロードされたswfファイルの閉じ方がわかりません。 どのようにしたら,閉じることができるのでしょうか。 Flashムービーの作成には Flash MX を使用しています。 ~~~~~~~~~~~~~~~ 私は前回のご質問に回答したので, http://oshiete1.goo.ne.jp/kotaeru.php3?q=2021966 http://okwave.jp/kotaeru.php3?q=2021966 質問の書き方例ように書かなくても, 今回のご質問で意味はわかりますが, 普通は少なくとも上のように書いてもらわないと答えようがありません。 しかし,上のように書いたとしても 『何をしたときに』 閉じたいのかがまだわかりませんね。 わかりませんが,普通は  unloadMovie("_root.stage"); で良いのではないでしょうか。 『"sutage" に読み込まれたムービーより上に表示させたボタン(MC)をクリックしたとき』に 開いた外部swfファイルを unload したいのでしたら、 _root のタイムラインのステージ上に 「閉じる」を書いた "ムービークリップ" を用意し, インスタンス名を適当に,close_btn などとしておき, そこに, ------------------------------ on (release) { unloadMovie("_root.stage"); this.swapDepths(-1); for (i=1; i<=4; i++) { _root["m_"+i]._visible = true; } } ------------------------------ と書いても良いと思います。 この close_btn は,"stage" より全面(上の深度)に出ておく必要がありますから, ロードするボタンスクリプトは ---------------------------- on (release) { _root.construction(); loadMovie("123.swf", "_root.stage"); _root.stage.swapDepths(5); //↓ココを追加 _root.close_btn.swapDepths(6); for (i=1; i<=4; i++) { _root["m_"+i]._visible = false; } } ---------------------------- となるでしょう。 また,上のようにはせず, 読み込まれた、「123.swf」の中に「閉じる」ボタンを作った場合、 そのボタンには ------------------------------ on (release) { for (i=1; i<=4; i++) { _root["m_"+i]._visible = true; } unloadMovie("_root.stage"); } ------------------------------ と書いても良いですし、 MovieClip._lockroot = true; などを使って、 親ムービーへの _root へのパスを無効にされている場合は、相対パスで ------------------------------ on (release) { for (i=1; i<=4; i++) { _root["m_"+i]._visible = true; } unloadMovie(this); } ------------------------------ でも良いと思います。 ====== しかし ======================== 確か,前回のご質問だと, "stage" には最初背景画像を入れてあるのですよね。 その場合,上のように unloadMovie(); すると, 確かに,ロードされたものは消えますが, 元の背景が戻ってくるわけではありません。 もし,元の背景に戻したい場合……・・・ どうするのでしょうか? どうすれば良いかは, 作者の意図や作っている物の状況にもよりますから一概に言えませんが, 「元の背景は元の背景。」「読み込むswfは読み込むswf。」 別々にした方が良いのではないでしょうか。 --- 手抜きな方法1 -------------- まず,今現在背景として利用している "stage" というムービークリップのあるレイヤーの上にさらにレイヤーを追加します。 そして "stage" というムービークリップのインスタンス名を消すか別の名前にします。 そしてその "元stage" を選択→「編集」→「コピー」その状態で, 新規で追加したレイヤーを選択し, 「編集」→「同じ位置にペースト」で新規で追加したレイヤーに "元stage" をコピーします。 そしてその上レイヤーにコピーされた "元stage" のインスタンス名を "stage" に戻します。 その "stage" を選択した状態で下のプロパティパネルの右の方にある,  カラー:[なし   ▼] となっている部分を  カラー:[アルファ ▼] [0% ]▼ のようにします。 これで透明なインスタンス名 "stage" というムービークリップができますから,ここに "123.swf" などをロードしても良いですね。 すると,unloadMovie(); した場合も,"元stage" が再表示されます。 -------------------------------- 「元の背景は元の背景。」「読み込むswfは読み込むswf。」 次は別々にしない場合の方法例です。 --- 手抜きな方法2 ------------------ "stage" というムービークリップを,新規ドキュメントにコピーし, その "stage" を外部swfとして,例えば「stage.swf」というファイル名で用意しておきます。 そして,「123.swf」が読み込まれたあと,それを消したい場合は,unloadMovie(); をするのではなく, __root のタイムラインのステージ上に 「閉じる」を書いた "ムービークリップ" を用意して, そこに, --------------------------- on (release) { loadMovie("stage.swf","_root.stage"); _root.stage.swapDepths(0); this.swapDepths(-1); for (i=1; i<=4; i++) { _root["m_"+i]._visible = true; } } --------------------------- と書いておけば, _root の "stage" がクリックされたとき,「stage.swf」がロードされ,深度 0 に移動しますから, また背景に戻ります。 ---------------------------------- この辺はスクリプトとかそういうものの問題ではなく, 実物を目の前にして, 「どのように表示させたいか。また,どのようなしくみにすれば良いか。」 というものを実際にごちゃごちゃしながら考えるしかないと思います。 ========================================= 最初に戻りますが,スクリプト上の話だと, ロードしたものを消す場合は unloadMovie(); です。 または, _root.stage._visible = false; でも消えます。 何でしたら,"stage"の深度は 0 以上ですから 前回紹介した http://hakuhin.hp.infoseek.co.jp/main/as/z.html#Z_01 にも書いていますとおり, _root.stage.removeMovieClip(); でも消えます。 また,ロードしたものを違う物に変えたいときは loadMovie(); です。 あとは,それをどう使うかは検討してみてください。 上に書いたことを理解するより,loadMovie(); と unloadMovie(); で, 実際に考えてみるほうが早いと思いますし,考える技量も上がると思います。

mauino
質問者

補足

説明不足、大変失礼致しました。以後気をつけます。 教えいただいた回答の最初にあった「unloadMovie」でやってみました。 「information」mcでうまく外部swfがそれぞれ閉じるのですが、「home」でシーン1へ戻ると、シーン2の4つのmcのみ残ってしまいます。 さらにシーン2へ行くと、4つのmcが重複して表示されてしまいます。 深度の問題でしょうか? homeへ戻った時に、4つのmcが表示されない方法を教えてください。 よろしくお願いいたします。

関連するQ&A

  • 外部swfとして読み込ませると動かなくなる

    下記のようなスクリプトを記したインスタンスをステージに配置し、stop();で止めてあるMC1を同じくステージに配置。 on (release) { _root.MC1.play(); } このままだと問題なく動いてくれるのですが、このswfファイルを別のswf(load.swf)から読み込むとうまく動いてくれません。 なんとなく_rootのあたりに問題があるのかな?と思うのですが、いまいちどう対処してよいものかわかりません。 解決する方法や代案をご存知の方がおられましたら、どうかご教示をよろしくお願いいたします。

    • ベストアンサー
    • Flash
  • flashで、レベルの違うボタンから外部swfファイルの読み込み

    flash初心者のkiyuです。 メインのflashサイトに外部swfファイルを読み込みたいのですが、上手くいきません。 1.mcはrootにおいてあります。 2.ボタンは2つあり、1つはおなじrootの同じステージ内。そして、2つ目のボタンは違うレベルにあります。 3.同じrootにあるボタンは読み込み可能。でも、違うレベルにあるボタンは読み込み不可。 コードは、 on(release){ _root.gotoAndPlay("フレーム名"); _root.mcのインスタンス名.loadMovie("外部ファイル名.swf"); } です。 いろいろ思考錯誤をくりかえしたのですが、どうにも上手くいきません。。。 よろしくお願いします。

  • 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を重ならないように表示したいです。

    FLASH初心者です。 二つの大小異なるサイズの読み込み用MCを用意して、 並んでいるサムネイルをクリックすると、その読み込み用MCに大きな写真と小さな写真を外部swfで読み込むようにしたいのですが、二つの読み込み用MCが重なっているので、表示が重なってしまいます。 大きい(小さい)写真のサムネイルをクリックすると、読み込み用MCに表示されている小さい(大きい)サイズのswfが消え、なおかつ前面に外部swfを表示する方法を探しています。 サムネイルのボタンインスタンスには、 on (release) { loadMovie ("pic1.swf", "_root.change"); } としています。 読み込み用MCには、change(小さい)、change2(大きい)と名前を付けています。 どなたか知恵を貸してください。 よろしくお願いします。

    • ベストアンサー
    • Flash
  • loadMovie()を組み込んだswfファイルをさらに別のswfファイルで読み込みたい。

    ActionScript初心者です。よろしくお願いいたします。 掲題の通りなのですが、外部のjpgファイルをloadMovieで読み込むswfファイルを、さらに別のswfファイルで読み込みしようとすると、jpgが表示されずに困っています。具体的には以下の通りです。 (1)jpgファイルを読み込むswfファイルについて ・ファイル名:「sub_screen.swf」 ・ムービークリップシンボル(インスタンス名"PHOTO_STAGE")に外部のjpgファイルを読み込ませるために、ボタンに以下のスクリプトを記述 "on(release){loadMovie("photo1.jpg",_root.PHOTO_STAGE);}" ・「sub_screen.swf」及び「photo1.jpg」は同一フォルダに保存 (2)sub_screen.swfを読み込むswfファイル ・ファイル名:「main_screen.swf」 ・ムービークリップシンボル(インスタンス名"STAGE")に「sub_screen.swf」を読み込ませるべく、ボタンに以下のスクリプトを記述 "on(release){loadMovie("sub_screen.swf",_root.STAGE);}" ・「main_screen.swf」、「sub_screen.swf」及び「photo1.jpg」は同一フォルダに保存 以上のような条件で「main_screen.swfファイル」を実行すると、jpgファイルだけが表示されません。(sub_screen.swfのボタン等は表示されます。)2重にloadMovieを実行することは不可能なのでしょうか? ご協力をお願いします。

  • 重たい外部swfのプリロード

    空のmcをステージにおき、そのフレームに、loadMovie();で外部のswfを読み込むまでは、出来るのですが、その外部swfが重い場合なので、プリロード(%)表示させたいのですが、どの場所にどういったscriptが、必要ですか? onClipEvent (data)ハンドラで外部ファイルのロードを待つとかのscriptを書いてるのですが、間違っているのでしょうか?

  • 外部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のフレームを指定して読み込み

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

  • 「swfファイルが読み込まれたら」という条件文をASで書くと・・?

    行き詰まってしまいました。 わかる方居られましたら、アドバイスいただけないでしょうか。 例えば、以下のような構成になっていると仮定します。 load.swfという読み込み元のファイルがあって、ボタンが3つ。 それに「loadarea」と名前をつけたMCを、外部swfの読み込み用エリアとして配置しました。 同じ階層(フォルダ内)に ・sample1.swf ・sample2.swf ・sample3.swf 上記のように構成されているとします。 load.swf内の「ボタン1」を押すと、外部swfファイルのsample1.swfが読み込まれるというスクリプト(以下)をボタン1に記述しました。 on(release){ loadMovie("sample1.swf", _root.load_area); } ここからが問題なのですが、 上記のように、外部swfファイルが読み込まれたら何々する(例えば、sample1が読み込まれたら、load.swf内のボタン1のアルファ値を変更する)というようなスクリプトを組みたいんですが、上手くいきません。 if文で記述することは可能なんでしょうか?

    • ベストアンサー
    • Flash
  • ボタンを押した時、外部swfを読み込み

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

専門家に質問してみよう