- ベストアンサー
as3のリンクについて
as3で複数のリンクを設定しており、 別ウィンドウで開こうと思っています。 その際に、複数のウィンドウが開くのではなく、 一つの別ウィンドウに表示させたいと思っています。 "_blank"だと複数ウィンドウが開いてしまいますし、 "win_name"のようにウィンドウ名を指定しても同じになってしまいます。 これは何か方法があるのでしょうか?
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
それは基本的にブラウザに細かい命令をするわけですから ActionScript(SWF内部的なこと) ではありません。 そういう仕事を直接するのは JavaScript です。 Flash でできることは, そういうブラウザ制御の JavaScript を呼び出すくらいです。 このようなこと↓を Flash のボタンなどから実行させます。 ■同じサブウィンドウで表示するページを切り替えよう http://www.d3.dion.ne.jp/~tiyoko01/java/subwin/subwin4.html ↑上のJavaScriptをそのまま使わせてもらうことにします。 ◎ファイル構造例 任意のフォルダ ├AAA.html(AAA.SWFを貼り付ける) ├AAA.swf ├TEST1.html ├TEST3.html └TEST3.html ◎AAA.html の HTMLソース 例 --------------------------- <html> <head> <title>AAA</title> <script type="text/javascript"> <!-- function subWins(pages) { w=window.open(pages,"mado","width=300,height=300,left=350"); w.focus(); } //--> </script> </head> <body> <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=10,0,0,0" width="550" height="400" id="AAA" align="middle"> <param name="allowScriptAccess" value="always" /> <param name="movie" value="AAA.swf" /> <param name="quality" value="high" /> <embed src="AAA.swf" quality="high" width="550" height="400" name="AAA" align="middle" allowScriptAccess="always" type="application/x-shockwave-flash" /> </body> </html> --------------------------- ◎AAA.swf AAA.swf のステージ上には 「btn1」,「btn2」,「btn3」 というインスタンス名を付けたボタンがあるとします。 それらのボタンがあるフレームに書くスクリプト例↓ --------------------------- btn1.addEventListener(MouseEvent.CLICK,btn1Click); function btn1Click(e:MouseEvent):void { ExternalInterface.call("subWins", "TEST1.html"); } btn2.addEventListener(MouseEvent.CLICK,btn2Click); function btn2Click(e:MouseEvent):void { ExternalInterface.call("subWins", "TEST2.html"); } btn3.addEventListener(MouseEvent.CLICK,btn3Click); function btn3Click(e:MouseEvent):void { ExternalInterface.call("subWins", "TEST3.html"); } ---------------------------
お礼
ご回答ありがとうございます。 いただいたものと同じ記述をしたのですが、やはりウィンドが複数開いてしまいます・・ 試しにHTML内にボタンを設置し、subWinsを実行してみると 一つのウィンドで表示されました。 FlashからExternalInterface.callで実行した場合は複数になってしまうようです。 ちょっとまだ解決策が見つかりません。。。
補足
解決できました! どうやら開く先のページ内でウィンド名が指定されていたため、 違うウィンドが立ち上がってしまっていたようでした。。。 ありがとうございました。