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() とか。です。