- ベストアンサー
コンポーネントのswfを別階層に設置する方法
- コンポーネントのswfを別の階層に設置したい場合、embedタグのパスを変更する必要があります。しかし、SteelExternalAll.swfのみが読み込まれない問題が発生しています。
- 現在の設置状況は、htmlファイルとswfファイルが同じ階層にあり、さらにflvファイルとSteelExternalAll.swfが存在するという形です。
- 目標とする設置状況は、htmlファイルとimgディレクトリが同じ階層にあり、imgディレクトリ内にswf、flv、SteelExternalAll.swfのファイルが存在することです。パスの変更をするにはどこを変更すればよいのでしょうか?
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
肝腎なバージョンを書いてくださらないと 回答不可能か困難になる場合が多いですよ...。 ガサゴソと探してみましたが 既存のもので「SteelExternalAll」というスキンは ActionScript 3.0 用コンポーネントには存在しないようです。 ということは Flash 8 とか Flash MX 2004 で ActionScript 2.0 用コンポーネントを使用しようとされているということでしょうか??? よくわからないので勝手にそういうこととします。 パスを相対パスで指定する場合 親SWFにロードする子SWFやJPEGなどのパスは 親SWFを起点としたパスではなくHTMLを起点としたパスになります。 これはFLVとは関係なくて動画以外のファイルはいつもそうです。 つまり loadMovie() や LoadVars.load() や MovieClipLoader.loadClip() や loadVariables() や getURL() などで書くパスは 全て HTML を起点としたパスになります。 なぜそうなのかと言うと loadMovie() などなどの命令文は ブラウザに対するリクエストだからです。 ブラウザはHTMLを表示しているので(ブラウザの居場所はHTMLの場所なので),HTMLからのパスになります。 FLVなどの動画だけが例外(すごく特殊なもの)だと思った方が良いです。 FLVなどの動画だけはSWFを起点としたパスを指定します。 したがって以下のようになります。 FLVを表示させる 親SWF が仮に 「Main.swf」 という名であるものとします。 その 「Main.swf」 を貼り付ける HTML が仮に 「Main.html」 という名であるものとします。 また 「Main.swf」 に写し出される FLV が仮に 「Movie.flv」 という名であるものとします。 そしてそれらのファイル構造が次のようになっているとします。 任意のフォルダ ├Main.html └img(フォルダ) ├Main.swf ├SteelExternalAll.swf └Movie.flv この場合, 「Main.swf」をパブリッシュする際に指定する「SteelExternalAll.swf」の相対パスは 「img/SteelExternalAll.swf」 になります。 ※ 【図】 (Flash 8 での操作画面例)↓ ※当然ですが,「Main.swf」を直接開いても 「SteelExternalAll.swf」のスキンは表示されなくなります。 SWFの上階層の 「Main.html」 をブラウザで開けば 「SteelExternalAll.swf」のスキンが表示されるはずです。
お礼
ご回答ありがとうございます! >Flash 8 とか Flash MX 2004 で ActionScript 2.0 用コンポーネントを >使用しようとされているということでしょうか??? すみません。お察しの通りflash 8です。 >loadMovie() などなどの命令文は ブラウザに対するリクエストだからです。 そうなんですね!これは知りませんでした。 どこに対する命令かでパスの違いが発生するなら納得がいきます。 >したがって以下のようになります。 画像も作成していただきありがとうございました! 非常にわかりやすかったです。 自分としてはスキンの下のURLがアクティブにならず わからなかったのですが、一番下に カスタムスキンのURLがありました^^; 無事解決できました! 大変助かりました。ありがとうございました!