• 締切済み

外部swfのMCを親swfから非表示にする

ムービークリップに外部swfを読み込み、 その外部swfファイルのムービークリップを XMLファイルから読み込んだ情報により、表示非表示の切り替えを 行いたいのです。 ========= fileNameXML = new XML(); ・ ・ //ファイル情報XMLファイルの読み込み fileNameXML.load("init.xml"); ・ ・ //ファイル名リストXMLの格納 fileName_temp1 = _root.fileNameXML.childNodes[0].childNodes[0]; ========= かなり抜粋していますが、上記のようにXMLファイルより 情報を読み込んでいます。 ========= _root.main_mc.loadMovie(sub.swf); 親swfのムービークリップに上記のように子swfを読み込み その子swfの中にある、ムービークリップ「btn_next」を XMLファイルより読み込んだ情報で以下のように非表示に変えたいのです。 ========= if (imgNum == 1) { btn_next._visible = false; } ========= 現在は、親swfから子swfのムービークリップを条件によって 非表示に変えられないものかと、色々試しています。 どうすれば、条件による非表示がうまくできるでしょうか。 flashバージョン8、ActionScript2.0 で作成しています。

  • Flash
  • 回答数1
  • ありがとう数0

みんなの回答

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

1つの流れの例ですが。  外部XLMをロードする    ↓  外部XLMのロードが完了する    ↓  外部SWFをロードする    ↓  外部SWFの1フレーム目がロードされる    ↓  それと同時に btn_nex の表示/非表示を指示する という流れが実行されるようにプログラムを組めば良いと思います。 ただし上の流れで行く場合, 「btn_nex」は「sub.swf」の_rootのフレーム1にある というのが条件になります。 肝腎な XML を書かれていませんからよくわかりませんが, XMLをこちらで勝手に作ることにして, サンプルXML例 とActionScript例 を書いてみます。 外部XMLファイル 「init.xml」 のデータ内容↓ ------------------------------------------- <?xml version="1.0" encoding="UTF-8"?> <button> <data imgNum="1" /> </button> ------------------------------------------- 親swfの_rootのフレームに書くスクリプト例↓ ////////////////////////////////////////////////////////////////// // ---SWFロードに関して------------------- // SWFロード監視用のオブジェクト「myObj」を作成 myObj = new Object(); //MovieClipLoaderクラスのインスタンスを作成 myMCL = new MovieClipLoader(); //外部SWFロード完了時の動作を定義 myObj.onLoadInit = function(targetMC) { // 「fileNameXML」の「ノード0」の「ノード0」の属性imgNumが "1" であれば if (fileNameXML.childNodes[0].childNodes[0].attributes.imgNum == "1") { // SWFをロードしたMC内の「btn_next」を非表示にする targetMC.btn_next._visible = false; } }; //「myMCL」のリスナーとして「myObj」を登録 myMCL.addListener(myObj); // ---XMLロードに関して------------------- // XMLクラスのインスタンス「fileNameXML」を作成 fileNameXML = new XML(); //XMLの余分な空白を無視 fileNameXML.ignoreWhite = true; //XMLファイルロード完了時の動作を定義 fileNameXML.onLoad = function(seikou) { // ロードに成功すれば if (seikou) { // 「main_mc」をターゲットとして「sub.swf」をロード myMCL.loadClip("sub.swf", _root.main_mc); } }; //XMLファイル「init.xml」の読み込み fileNameXML.load("init.xml"); ////////////////////////////////////////////////////////////////// ASバージョン:ActionScript1.0 要:Flash Player 7 以上用のSWFにパブリッシュ コードの記述順は  //XMLファイル「init.xml」の読み込み  fileNameXML.load("init.xml"); これが最後ですが, 動作の時間的な流れはここから始まります。 まずその  //XMLファイル「init.xml」の読み込み  fileNameXML.load("init.xml"); これで外部XMLのロードが開始されます。 そして,XMLのロードが完了すると  //XMLファイルロード完了時の動作を定義  fileNameXML.onLoad = function(seikou) {…}; ここで定義した動作が実行されます この中には  // 「main_mc」をターゲットとして「sub.swf」をロード  myMCL.loadClip("sub.swf", _root.main_mc); が書いてあるのでここでSWFのロードが開始されます。 そして, SWFのフレーム1のロードが完了して表示される瞬間に  //外部SWFロード完了時の動作を定義  myObj.onLoadInit = function(targetMC) {…}; ここで定義した動作が実行されます。 この中には  // 「fileNameXML」の「0ノード」の「0ノード」のimgNum属性が "1" であれば  if (fileNameXML.childNodes[0].childNodes[0].attributes.imgNum=="1") {    // SWFをロードしたMC内の「btn_next」を非表示にする    targetMC.btn_next._visible = false;  } が書いてあるので, ここでXMLファイルのデータによって ロードしたSWF内のbtn_nextの 表示/非表示 が決定します。 ロードには時間がかかるので, 2回のロード待ち(ロード完了の取得)をしていることになります。 XMLのロード待ちはXMLクラスのままでできます。 しかしSWFのロード完了などは loadMovie では取得が非常にしにくいため, loadMovie ではなく MovieClipLoaderクラス のスクリプトでSWFをロードしています。 このクラスを使用するため Flash Player 7 以上用の SWF をパブリッシュする必要があります。 他の流れでもで良いですが, 何にしても,まず 「どうしたいのか」 を具体的に考えて, それが辻褄の合った流れで動作するように, 頭の中でシミュレーションすることが大切です。 あと,  // SWFをロードしたMC内の「btn_next」を非表示にする  targetMC.btn_next._visible = false; この部分は, onLoadInitの引数で取得できる「targetMC」を使っていますが, 上の場合ここには「_root.main_mc」が入るとわかっています(1つに定まっています)。 したがって意味的には次と同じになります。  // SWFをロードしたMC内の「btn_next」を非表示にする  _root.main_mc.btn_next._visible = false; このように書いても全く問題はありません。

関連するQ&A

  • 外部SWFを読み込むと子SWFの一部分しか表示されません!

    パソコンはwindows XPでFlashCS3を使っている初心者です。 現在、下記のような方法で外部SWFを読み込もうとしているのですが、 読み込み自体は成功するものの、読み込まれたSWFファイルが 最大サイズまで拡大されており、キチンと表示されません。 --外部SWFの読み込み方法-- 1 親SWFの_rootに、「Load_mc」というインスタンス名で、   横350px×縦200pxのサイズのムービークリップを作ります 2 親SWFのフレームのスプリクトに _root.Load_mc.loadMovie("movie1.swf"); と入力します 3 新たに「movie1.swf」という子SWFファイルを作成し、   ドキュメントのサイズを横350px×縦200pxに設定。   10フレームごとに3枚、横350px×縦200pxのjpeg画像を設定します 4 それぞれのファイルを改めてパブリッシュ。   するとなぜか親SWFで子SWFは読み込まれ、ムービーも正常に動いているものの、 子SWFがウインドウサイズを最大まで引き延ばしたかのような画質で表示され、   且つ、「Load_mc」の大きさで表示できる左上の一部分しか表示されません --------- いろんなサイトを見て回ったのですが、同じようなトラブルがなかなか見つからず、 パソコンの環境か、パブリッシュ時の設定のせいじゃないかと調べたのですがわかりません。 大変申し訳ないのですが、わかるかたがいらっしゃいましたらご教授願えないでしょうか?

    • ベストアンサー
    • Flash
  • 外部swfファイルを予め読み込んで、順番に表示させたい

    外部のムービークリップを予め読み込んでおいて(読み込んでいる間はNowLoadingさせる)順番に表示させるムービーを作成しています。 ●時期によって外部のムービークリップを追加したり、入れ替えたり、順番を変えたりを簡単にできるようにしたいと考えています。 ●順番に読み込んでいたのでは毎回ムービーが止まってしまうので、予め読み込んでおきたいと思っています。 以上のようなムービーを自分なりに調べたり試したりしているのですが、以下のようになってしまって、どうもうまくいきません。 ▼loadMovie("url",target)を使って予め全て読み込むようにするには外部ファイル数分のtargetが必要になってしまった。 ▼読み込んだ時点でムービーが始まってしまうので順番が来たときには外部ムービーのフレームが進んでしまっていた。 tellTarget (target) { gotoAndPlay(1); } とやってみたが、うまくいかなかった。 ▼loadMovieNumを使うと読み込まれた時点ですべて重なって表示されてしまう。 ▼_root.target._visible = false;とやってみましたが表示されてしまった。読み込んだムービーは枠外に置く以外にうまい方法はないのでしょうか?非表示にはできないのでしょうか?

    • ベストアンサー
    • Flash
  • 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
  • XMLファイルの読み込みとデータの引き出し

    すみません。 徹夜しても答えがわからないのですが、 XMLからSWFの読み込みなのですが 下記スクリプトの間違いは何でしょうか? FLASH8.0 AS2 で作成してます。 //XMLファイルのXMLオブジェクトへの格納 myobjXML = new XML(); myobjXML.ignoreWhite = true; //XMLファイルの読み込み myobjXML.load("article.xml"); //XMLの情報格納 var imgNum = _root.myobjXML.childNodes[0].childNodes[0].nodeValue; if (imgNum == 1) { _root.nextbtn_mc._visible = false; _root.nextbtnlarge_mc._visible = false; } //写真数表示 this.imgnumtxt.text = imgNum; this.imgnumtxt2.text = imgNum;

  • 外部swfが表示されません

    FLASH初心者です。 いろいろと調べながら、外部swfを取り込んだswfの作成にチャレンジしています。 今連続する外部swf(子swf)を a.swf b.swf c.swf として作成し、それらを表示させるための親swfを下記のように作成しているのですが表示されません。 親swf作成の作業としては 1.a.swfを外部から取り込んで表示させるためにムービークリップを作成 『挿入』⇒『新規シンボル』⇒『新規シンボルの作成』で名前:mc1 タイプ:ムービークリップとしてシンボルを作成。 2.b.swf、c.swfにもムービークリップを作成 1.同様にし、 b.swfのシンボル名を“mc2”、インスタンス名を“mc2” c.swfのシンボル名を“mc3”、インスタンス名を“mc3” 3.シンボル“mc1”の1フレーズ目に loadMovie("a.swf","mc1"); とアクションスクリプトを入力。 4.シンボル“mc2”、シンボル“mc3”も同様にしてそれぞれ loadMovie("b.swf","mc1"); loadMovie("b.swf","mc3"); と入力。 5.ステージ上に新規レイヤー“MC1”・“MC2”・“MC3”を作成。 6.“MC1”レイヤーをタイムライン上の1フレーズ目で『キーフレーム』に変更し、ライブラリから“mc1”をステージ上へドラッグして配置。 7.レイヤー“MC2”・レイヤー“MC3をそれぞれ12フレーズ目、24フレーズ目で同様にキーフレームを作成して“mc2”・“mc3”を配置。 子swf単体では表示されるのですが、上記の親swfはムービープレビューしても何も表示されません。 どのようにすれば子swfが親swfで表示されるようになるのでしょうか。 ちなみに子swfファイル・親swfファイルは全て同じフォルダ内にあります。 環境 OS:WindowsXP アプリケーション:FLASHI MX 7.2 よろしくお願いします。

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

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

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

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

    • ベストアンサー
    • Flash
  • 外部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を読み込んだときだけMouse.hide();させたい。

    よろしくお願いします。 ドキュメント上に空のムービークリップを作り、その中の入れ子のボタンを押すと外部swfを表示するflashを作ったのですが、その外部swf、仮にhoge.swfを読みこんで、そのときだけマウスを隠して(ムービークリップをマウス代わりに)、ボタンで違う外部swf、仮にogeをよみこんだときはマウスを表示させることは可能でしょうか? onClipEvent (enterFrame) { this._x=_root._xmouse; this._y=_root._ymouse; Mouse.hide(); } 上記のスクリプトでマウスを消すと、ogeを読み込んでもマウスが消えっぱなしです。 多分if文を使って if (hogeを読み込んだら){ this._x = _root._xmouse; this._y = _root._ymouse; Mouse.hide(); } //そうでなかったら、 else { Mouse.show(); } みたいな感じなのでしょうが、うまく機能しません・・・。 ご教授お願い致します。

    • ベストアンサー
    • Flash

専門家に質問してみよう