家の中でのこだわりスペースはどこですか?

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を実行することは不可能なのでしょうか?

ご協力をお願いします。

A 回答 (1件)

まず,



on(release){loadMovie("sub_screen.swf",_root.STAGE);}

これで
_root にある STAGE というインスタンス名のムービークリップに sub_screen.swf がロードされます。
この時点で sub_screen.swf はムービークリップ STAGE 扱いになります。

  _root(main_screen.swf の _root)
   └ STAGE ←これが sub_screen.swf


次に,

on(release){loadMovie("photo1.jpg",_root.PHOTO_STAGE);}

これで
_root にある PHOTO_STAGE というインスタンス名のムービークリップに photo1.jpg がロードされます。

  _root(main_screen.swf の _root)
   ├ STAGE ←これが sub_screen.swf
   └ PHOTO_STAGE ←ここに photo1.jpg がロードされる


つまり,
main_screen.swf の _root の直下に
PHOTO_STAGE というインスタンス名のムービークリップがあれば,
そこに photo1.jpg がロードされます。

言い換えると,
main_screen.swf の _root の直下に
PHOTO_STAGE というインスタンス名のムービークリップがなければ,
そこには photo1.jpg がロードされません。


もし main_screen.swf の _root の直下にある PHOTO_STAGE というインスタンス名のムービークリップに JPEG をロードするのではなく,
sub_screen.swf の _root の直下にある PHOTO_STAGE というインスタンス名のムービークリップに JPEG をロードするのでしたら,
sub_screen.swf にあるボタンのスクリプトを

on(release){loadMovie("photo1.jpg",this.PHOTO_STAGE);}

とすべきです。

または,
_root を是非とも使いたいという場合でしたら,
sub_screen.swf の _root の フレーム1 の最初辺りに,

// この階層で _root を ロック する
this._lockroot = true;

と書きます。
すると sub_screen.swf の _root で _root がロックされますから,
main_screen.swf の _root の PHOTO_STAGE というインスタンス名のムービークリップ には photo1.jpg がロードされなくなります。

つまり,
sub_screen.swf の _root の PHOTO_STAGE というインスタンス名のムービークリップ には photo1.jpg がロードされるようになります。

ただし,
this._lockroot = true;
が使えるのは Flash MX 2004(通し番号 Flash 7)以降で,
FlashPlayer7 以降,もしくは Flash Lite 2.0 以降用の SWF をパブリッシュする場合に限ります。


Flashドキュメンテーション
ActionScript 2.0 リファレンスガイド
_lockroot (MovieClip._lockroot プロパティ)
http://livedocs.adobe.com/flash/8_jp/main/000024 …
    • good
    • 0
この回答へのお礼

すぐにお返事が出来なくて、申し訳ありません。改めて、回答ありがとうございます。
_rootとthisの関係をいまいち理解していなかったのが原因なんですね。おかげさまで
解決しました。

お礼日時:-0001/11/30 00:00

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報