- ベストアンサー
Flashでの相対パスでのリンク設定方法
Flashでサイトを制作していますが 今まで、Flashのページから他のHTMLで生成されたページへリンクを貼って飛ばす場合には、HTMLページを先にサーバーに上げて、絶対パスのURLでFlash内でリンク設定をしていました。 その方法しか知らなかったのですが・・・ Flashでも、HTML同様に ローカル上で同じフォルダ内で 相対パスでHTMLページにリンクを設定する事が 出来るとの事ですが・・・ その一連の作業のやり方が分からずに困っております。 ・window.openの設定(相対パスにて指定) ・以前のサンプルで渡したように横550px、縦520pxのウィ ンドウで開くように ・スクロールバーとリサイズハンドルあり(他はなし) ・ウィンドウ名はswin という内容でFlash内にHTMLページへのリンクを設定して欲しい!と言われていますが・・・ どの様に設定すればいいのでしょうか? 宜しくお願い致します。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
ご質問の前半,及び,ご質問の題名の, 「相対パスでHTMLページにリンクを設定すること」 と, ご質問の後半の, 「window.open でウィンドウのサイズを指定して開く」 は, まったく別のことですよ。 同値のこととして一色単に考えていらっしゃるのでしたら, まずその点を認識し改めてください。 HTML でも2つは全然別の話でしょう。 Flash も同じです。 というか, Flash からリンク は HTML のリンクと全く同じと考えれば良いのです。 ◎「相対パスでHTMLページにリンクを設定すること」 について これは例で説明します。 ---例1----------------------- 任意のフォルダ ├ index.html ├ index.swf └ content1.html index.html から content1.html にリンクを張る場合 ↓↓↓ ↓↓↓ <a href="content1.html">コンテンツ1へ</a> index.html に貼り付いている index.swf から, content1.html にリンクを張る場合 ↓↓↓ ↓↓↓ getURL("content1.html"); ------------------------------ ---例2----------------------- 任意のフォルダ ├ index.html ├ index.swf └ content (フォルダ) └ content1.html index.html から content1.html にリンクを張る場合 ↓↓↓ ↓↓↓ <a href="content/content1.html">コンテンツ1へ</a> index.html に貼り付いている index.swf から, content1.html にリンクを張る場合 ↓↓↓ ↓↓↓ getURL("content/content1.html"); ------------------------------ 全く同じですね。 a href= なのか,getURL なのかが違うだけで, パスは全く同じです。 ただし,次のような場合は要注意です。 ---例3----------------------- 任意のフォルダ ├ index.html ├ content1.html └ flash (フォルダ) └index.swf index.html から content1.html にリンクを張る場合 ↓↓↓ ↓↓↓ <a href="content1.html">コンテンツ1へ</a> index.html に貼り付いている index.swf から, content1.html にリンクを張る場合 ↓↓↓ ↓↓↓ getURL("content1.html"); ------------------------------ index.html に貼り付いている index.swf から, content1.html にリンクを張る場合, index.swf から見て,content1.html は親フォルダ(1つ上のフォルダ階層)にあるため, getURL("../content1.html"); になりそうな気がしますが, そうはなりません。 getURL("SWFが表示されているHTMLから見たパス"); です。 普通は以上で, 「相対パスでHTMLページにリンクを設定すること」 の回答は終わるのですが, 次の「window.open でウィンドウのサイズを指定して開く」にも関わってくるので, なぜそうなのかということを私なりに説明しておきます。 getURL(""); は 普通の ActionScript のように見えて, 実は半分 ActionScript ではない特殊な ActionScript だと考えてもらうとわかりやすいです。 getURL(""); は, Flash国という国にある空港の免税エリアの入口のようなものだと私はイメージしています。 getURL("ブラウザへの命令"); ~~~↑~~ ~~~~~~~~↑~~~~~~~~~ ココまでFlash ココからはブラウザの仕事 だから,例3の, getURL("content1.html"); は, 「ブラウザさん,『content1.html』 を開いてね(実行してね)」 ということです。 例3で index.html を表示しているブラウザの現在表示中のURLは, 「任意のフォルダ/index.html」です。 ブラウザとしては,「任意のフォルダ/index.html」にいるつもりなので, 「ブラウザさん,『content1.html』 を開いてね(実行してね)」 という命令をFlashから受け取って, 「任意のフォルダ/index.html」 から見た 「content1.html」, つまり, 「任意のフォルダ/content1.html」 をブラウザが表示するのです。 実際の仕事は Flash ではなく,ブラウザがしているのです。 ◎「window.open でウィンドウのサイズを指定して開く」 について これは,ActionScript ではなくて,JavaScript を使用します。 書かれている通り, 正に,JavaScript の window.openメソッド でするのです。 「■サブウィンドウのOS別表示一覧 / Flash MX 2004」 http://www.openspc2.org/reibun/FlashMX2004/sub_window/index.html ここ↑に色々な場合のスクリプトのサンプルが書かれています。 Flash MX 2004 とか書いてありますが, そんなことはほとんど関係ありません。 上で説明したように getURL("ブラウザへの命令"); ~~~↑~~ ~~~~~~~~↑~~~~~~~~~ ココまでFlash ココからはブラウザの仕事 なわけですから, Flash MX 2004 とか Flash 8 とか Flash 5 とか, そういう問題ではなく,ブラウザに大きく左右されます。 > ・横550px、縦520pxのウィンドウで開くように > ・スクロールバーとリサイズハンドルあり(他はなし) > ・ウィンドウ名はswin なわけですから, -------------------------------------------- getURL("javascript:void(window.open('○○.html','swin','width=550,height=520,scrollbars=yes'))"); -------------------------------------------- となります。 「○○.html」 は最初に書いた通りです。 Flash をあまり意識せず,HTML を主体にして考えれば良いだけです。 また,本家 Adobe のページ 「Flash でポップアップブラウザウィンドウを作成する方法」 http://www.adobe.com/jp/support/flash/ts/documents/fl0308.html ここには,HTMLの方にJavaScriptを書いておいて, そのJavaScriptをFlashから動作させる方法など, 色々な window.open の方法が書いてあります。