• ベストアンサー

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

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

  • gigigi
  • お礼率91% (237/260)
  • Flash
  • 回答数3
  • ありがとう数2

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

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

>なんとなく_rootのあたりに問題があるのかな?と思うのですが たぶんそうでしょうね。 ロードされる swf が 別のswf(load.swf) にロードされたとき, _root が その別のswf(load.swf)の _root を指すようになるために動かなくなったのだと思います。 > 下記のようなスクリプトを記したインスタンスをステージに配置し   _root    ├ スクリプトを記したインスタンス    └ MC1 ということでしょうか? もしそうであって, スクリプトを記したインスタンスがボタンインスタンスであれば, on (release) { this.MC1.play(); } もしくは this を省略して on (release) { MC1.play(); } スクリプトを記したインスタンスがムービークリップインスタンスであれば, on (release) { this._parent.MC1.play(); } もしくは this を省略して on (release) { this._parent.MC1.play(); } と書けば大丈夫だと思います。 このように全て相対パスで書くのが一般的な対処法です。 「ターゲットパス」 http://homepage3.nifty.com/ginga-b/MX/targetpath.html また, Flashのアクションパネルの上側(スクリプトを書く部分のすぐ上の鴨居の部分)には, ○ に + を組み合わせた形のアイコン(田←これのフチが丸いボタン)があると思いますが, それが「ターゲットパスの挿入」ボタンです。 on (release) {   play(); } ここまで書いておいて, play の前側にカーソルを置いて, on (release) {   |play(); } 「ターゲットパスの挿入」ボタンを押すと,色々なインスタンスが出てくると思いますから, 「相対パス」にチェックを入れて MC1 を選択すると,自動的に, on (release) {   this.MC1.play(); } などと記入されると思います。 いつもこのターゲットパスの挿入ボタンが使えるわけではありませんが, このボタンを使えた場合,使うのも1つの方法です。 ====================== なお, Flash MX 2004 (FlashPlayer7)以降は, ムービークリップに _lockroot プロパティが追加されました。 Google検索「_lockroot」 http://www.google.co.jp/search?hl=ja&q=_lockroot&lr= FlashPlayer7 以降用の SWF をパブリッシュする場合は, ロードされるSWFの_rootのフレーム1の最初などに, this._lockroot = true;. と書いておくと, その SWF が他の SWF からロードされたときも, 別のswf(load.swf) に _root が移動せずにその SWF 内でロックされるので, on (release) { _root.MC1.play(); } のままでも大丈夫になります。

gigigi
質問者

お礼

おかげさまでthis._parent.を2行目の頭に加えることで動くようになりました。助かりました。 詳しく教えていただいてとても勉強になりました。 実際は下記のようにクリックした際に音を鳴らすようになっているのですが、音が鳴らないようになりました。 教えて頂いたthis._lockroot = true;を使用してみたりse001の手前に_parent.を付け加えてみたりしたのですが、やっぱり鳴らない。 ライブラリにある音は相対パスのような感じで指定できますでしょうか? あつかましいのですがよろしければどうかよろしくお願いいたします。 on (release) { this._parent.MC1.play(); var se01:Sound = new Sound(); se01.attachSound("click"); se01.start(); //ライブラリ内のclick.mp3のリンゲージをclickに指定済み }

その他の回答 (2)

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

#2です。 ぜんぜん 変更 になっていませんでした。 #2 で書きたかったのは, --------------------------------- > var se01:Sound = new Sound();  ↓変更↓ var se01:Sound = new Sound(this); でうまく行くのではないかと思いますが。 --------------------------------- です。

gigigi
質問者

お礼

おおおおお!できました! 度重なる返信を頂き本当にありがとうございました。 四苦八苦していたため助かりました。 改めてありがとうございました。

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

#1です。 > 実際は下記のようにクリックした際に音を鳴らすようになっているのですが、 > 音が鳴らないようになりました。 その現象は聞いたことがあります。 結局リンケージで共有する部分が難しいのです。 ロード元(親)SWF に ロード先(子)SWF のムービークリップを, attachMovie できないとか,その辺のことと絡んでいます。 > var se01:Sound = new Sound();  ↓変更↓ var se01:Sound = new Sound(); でうまく行くのではないかと思いますが。 「FN0402003 - Sound.attachSound()メソッド - Flash テクニカルノート」 http://www.fumiononaka.com/TechNotes/Flash/FN0402003.html > [*2] サウンドにリンケージを設定した外部SWFムービーを > MovieClip.loadMovie()メソッドで読込む場合には、 > Soundオブジェクトを作成する際(コンストラクタnew Sound())の > 引数として、外部SWFをロードするターゲットのMovieClipインスタンスが > 渡されなければなりません。 > // フレームアクション > my_sound = new Sound(this); > my_sound.attachSound("mySound"); > my_sound.start();

関連するQ&A

  • 外部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
  • ボタンを押した時、外部swfを読み込み

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

  • トゥーインで動くMCへ、外部swfをloadMovie

    どなたか教えて下さい。 【例】 stage(W=400XH=200)の大きさの元swf上に、W=200,H=100の大きさのMC(インスタンス名は"aa_mc")を、右端から左端へ、モーショントゥーインを使って移動します。 単純に5フレーム使って移動して、5フレーム目で左端にきて「stop」します。 そのaa_mcの下に、ボタンがあり、そのボタンに on (release){ _root.aa_mc.loadMovie("gaibu.swf"); //gaibu.swfは同じフォルダ内にあるaa_mcと同じ大きさのswf } で、読み込ませたいんですが、aa_mc自体が動いている瞬間に一瞬だけ表示されてすぐに消えてしまいます。 厳密に言えば、_rootの1フレーム目くらいで表示され、4フレーム目くらいには消えてしまうんですが、これってどうすれば直るんでしょうか? どなたか教えてください! FRASH MX 2004を使っています。 お願いします。

    • ベストアンサー
    • 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"); } です。 いろいろ思考錯誤をくりかえしたのですが、どうにも上手くいきません。。。 よろしくお願いします。

  • 外部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の中のムービークリップを拡大したい

    こんばんわ! ちょっとわからないことがあるので質問があります。 よろしくお願いします。 メインの空ムービー(インスタンス名"loadpoint")に外部SWF"hallo.swf"を読み込むとします。 メインに取り付けた拡大、縮小ボタンで 外部SWF"hallo.swf"の中のムービクリップ(インスタンス名"touten_mc")を拡大させるにはどのようにしたらよろしいでしょうか? ※ 拡大ボタンにいれたスクリプト 単純に on(release) _root.loadpoint.touten_mc._xscale = 110; _root.loadpoint.touten_mc._yscale = 110; } 結果できませんでした よろしくおねがいします。

    • ベストアンサー
    • Flash
  • swf4で外部swfの読込み方

    SUZUKAで携帯ゲーム作ってます。まだ若葉マークです。 自作の親swfと読込むswfは、それぞれ携帯電話で動作します。 http://orange.2-d.jp/flash/action/15_swf_load.htmlを参考にさせてもらってます。 on (release) { loadMovie("page1.swf",_root.loadpoint); } PC上では動作します。スクリプトがswf4用ではないのか携帯では動作しません。 どなたか、swf4でのアクションスクリプト、教えてください。

  • 読み込んだ外部SWFが再生されません

    こんにちわ 四苦八苦しながらやってるのですが 解決策がみつかりません(汗 現在ムービークリップの中にボタンを配置しているのですが そのボタンをクリックすると外部SWFを読み込む 仕組みまでできました。 読み込む内容は簡易的なMP3プレイヤーなのですが プレイボタンやストップボタンは正常に現れるものの プレイボタンを押しても再生されないです。。。 MP3プレイヤー自体のSWFを起動するとプレイを押したとき 正常に音楽がながれるのですが 母体のSWF内で読み込んだSWFは正常に動作しません。 ボタンに対してのアクションスクリプトは以下の通りです on (release) {  gotoAndPlay(23);  loadMovie("musicplayer.swf", "musicpoint_mc"); } 問題点がさっぱりわかりません。 アドバイスお願いいたします。 FLASH8 WIN XP使用してます。

    • ベストアンサー
    • Flash
  • 外部swfを重ならないように表示したいです。

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

    • ベストアンサー
    • 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