SWFObjectを使ったExternalInterface(2)

SWFObjectを使ったExternalInterfaceまとめの続きです。

前回はExternalInterface.call でAS→JSの通信が出来たところまででした。今回は逆に、JSからAS関数を呼び出すところです。それにはaddCallback関数を使います。

HTML側↓

<div id="externalFlash">
<script type="text/javascript">
// <![CDATA[
var so = new SWFObject('hoge.swf', 'externalName', '400', '300', '8', '#ffffff');
so.addParam('wmode', 'opaque');
so.addParam('allowScriptAccess', 'always');
so.write('externalFlash');
// ]]>
</script>

そしてFlash側↓

import flash.external.*; //←いちばん最初に書く
//
ExternalInterface.addCallback("flashCallbackFunc",null, sampleFunc)
function sampleFunc(){
test_txt.text="コールバックしたよ"
}

そしてJS側↓

function removelayer(){
var doc= document.all? window["externalName"] : document["externalName"];
doc.flashCallbackFunc();
}

大事なのは、コールバック用JS関数をコールするのはSWFObjectのDIVじゃなくて、EMBEDのIDから、ということです。これで一日ハマりました。やりがちなのが externalFlash.flashCallbackFunc() とか。です。

この記事には、カテゴリ javascript タグは がつけられています。