ExternalInterface.callはFlash(swf)とHTML(JavaScript)を連携させる場合に使う。
swfから任意のタイミングでJavaScriptの関数を呼び出し、引数を得ることができる。
今回はswfの実行と同時にからJavaScript上の関数(callJavascript)を実行し、配列とswfから送った文字列(”swfから送る引数”)を返すものを作ってみた。
【参考】ExternalInterface – ActionScript 3.0 言語およびコンポーネントリファレンス
http://help.adobe.com/ja_JP/AS3LCR/Flash_10.0/flash/external/ExternalInterface.html
以下、実行例とダウンロードファイル一式
↓AS
1 |
var returnValue:Array=ExternalInterface.call("callJavascript","swfから送る引数"); |
↓JS
1 2 3 |
function callJavascript(arg) { return [jmp,img,cap,[arg]]; } |
【参考】外部APIを使用したFlashとJavaScriptの接続 | デベロッパーセンター
http://www.adobe.com/jp/devnet/flash/articles/external_interface.html
以下、AS2,AS3版の実行例とJSのソースと一式のダウンロード版
↓AS2版
1 2 3 4 5 6 7 8 9 |
import flash.external.ExternalInterface; _root.createTextField("return_txt", 0, 0, 0, Stage.width, Stage.height); var returnValue:Object = ExternalInterface.call("callJavascript", "swfから送る引数"); for (var i:Number = 0; i<returnValue.length; i++) { for (var j:Number = 0; j<returnValue[i].length; j++) { return_txt.text += returnValue[i][j]; } return_txt.text += "\n"; } |
1 2 3 4 5 6 7 8 9 10 11 12 |
import flash.external.ExternalInterface; var return_txt:TextField = new TextField(); return_txt.width=stage.stageWidth; return_txt.height=stage.stageHeight; addChild(return_txt); var returnValue:Array=ExternalInterface.call("callJavascript","swfから送る引数"); for (var i:int = 0; i<returnValue.length; i++) { for (var j:int = 0; j<returnValue[i].length; j++) { return_txt.appendText(returnValue[i][j]); } return_txt.appendText("\n"); } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
package { import flash.display.Sprite; import flash.text.TextField; import flash.external.ExternalInterface; public class Main extends Sprite{ public function Main(){ var return_txt:TextField = new TextField(); return_txt.width=stage.stageWidth; return_txt.height=stage.stageHeight; addChild(return_txt); var returnValue:Array=ExternalInterface.call("callJavascript","swfから送る引数"); for (var i:int = 0; i<returnValue.length; i++) { for (var j:int = 0; j<returnValue[i].length; j++) { return_txt.appendText(returnValue[i][j]); } return_txt.appendText("\n"); } } } } |
↓html側のJavaScript
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
<script> function callJavascript(arg) { return [jmp,img,cap,[arg]]; } jmp = new Array(); img = new Array(); cap = new Array(); jmp[0] = "aaa"; jmp[1] = "bbb"; jmp[2] = "ccc"; jmp[3] = "ddd"; img[0] = "000"; img[1] = "111"; img[2] = "222"; img[3] = "333"; cap[0] = "あああ"; cap[1] = "いいい"; cap[2] = "ううう"; cap[3] = "えええ"; </script> |
ファイル一式 >>ダウンロード
【関連】
ExternalInterface.addcallback(JSからASを呼び出す)
http://www.mztm.jp/2009/06/10/externalinterfaceaddcallback/
2 Comments
[…] 【関連】 ExternalInterface.call(ASからJSを呼び出す) http://www.mztm.jp/wp/2009/05/24/externalinterfacecall/ […]
[…] 【関連】 ExternalInterface.call(ASからJSを呼び出す) http://www.mztm.jp/2009/05/24/externalinterfacecall/ […]