ExternalInterface.call
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
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版
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";
}
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");
}
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/






