こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

Flashで別swfの読み込み

FLASHでwebサイトを作っています
メインのswfファイル上にステージを配置し、そこにtextファイルを読み込む別swfを読み込ませたいのですが、上手く表示されません。
textファイルを読み込むswfは単体でプレビューすると表示されるんですが、メインswfからその別swfを読み込ませようとすると表示されません
他の別swfはきちんと読み込まされます
どうかアドバイスお願いします

投稿日時 - 2008-01-11 02:44:22

QNo.3669020

困ってます

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(1)

ANo.1

7~8割くらいの確率で,
問題があるのはターゲットパスでしょう。
http://www.google.co.jp/search?hl=ja&q=%E3%82%BF%E3%83%BC%E3%82%B2%E3%83%83%E3%83%88%E3%83%91%E3%82%B9

残り2~3割くらいの確率で,
問題があるのはファイルパスだと思います。
どっちにしてもパスです。



外部SWFをロードする場合,
たいていは,MovieClip.loadMovie もしくは MovieClipLoader.loadClip によって,
ムービークリップにSWFを読み込みます。

ムービークリップに読み込まれた 子SWF は 親SWF から見れば単なるムービークリップです。
また 子SWF のスクリプトは 親SWF 内で動作するので,
パスは全て 親SWF からみたパスになります。

例えば,
絶対パスで 子SWF の _root に外部textファイルを読み込むようにしていたとします。
子SWF 単体で見れば, _root は自分自身のメイン階層のタイムラインを指しますが,
親SWF 中で動作させる場合,この _root は 親SWF の _root を意味してしまいます。
ここでターゲットパスにズレが生じます。


対処方法は,
子SWF 内で,_root を含む絶対パスを使用しないようにするということです。
つまり全て this.○○… のような相対パスを使うことです。
これが最も一般的な対処法です。

どうしても 子SWF 内で絶対パスを使用したい場合は,
Flash MX 2004 以上(Flash Player 7 以上)に限って,_lockroot プロパティが使用できますからこれを使います。
子SWF のフレーム1の最初の行に,
this._lockroot = true;
と書くと _root は,
そのファイル(読み込まれた場合はムービークリップ扱い)内で,
_root が ロック されますから,階層の構造変化がなくなると思います。

Flash 8 ドキュメンテーション
_lockroot (MovieClip._lockroot プロパティ)
http://livedocs.adobe.com/flash/8_jp/main/00002482.html



ファイルパスの問題ですが,
Flash のロードは SWF からのパスではなく,
SWF が表示されている HTML からのパスになります。
さらに,
親SWF に 子SWF をロードする場合,
子SWF にロードするテキストファイルのパスは,
親SWF が表示されている HTML からのパスを書かなければなりません。
この点に注意してください。



なお,
親SWF と 子SWF が別サイト(別ドメイン)にある場合は論外です。
こちらは,
「Flash クロスドメインセキュリティ」 などをネットで検索してみてください。

投稿日時 - 2008-01-11 04:36:02

お礼

BlurFiltanさん ありがとうございました
ファイルパスだったんですね。。。なんとかできましたありがとうございました^^

投稿日時 - 2008-01-11 22:37:56

あなたにオススメの質問