Home > 梅原 > ExternalInterface.call

ExternalInterface.call

20090524
Category:梅原 /Tags:,

ExternalInterface.callExternalInterface.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

var returnValue:Array=ExternalInterface.call("callJavascript","swfから送る引数");

↓JS

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版

Get Adobe Flash player

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";
}

 
↓AS3版

Get Adobe Flash player

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");
}

 
↓AS3 Class化版

Get Adobe Flash player

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

<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/


関連記事:

  1. No comments yet.
Comments are closed.