SWFObjectを使ったExternalInterfaceまとめ

FlashとJSの通信をしたいならExternalInterfaceを使うのは常識だとして、実際、どう書いていいのかがよく分からなくなる場合があるのでまとめです。

HTML側↓

<div id="externalFlash">
<script type="text/javascript">
// <![CDATA[
var so = new SWFObject('hoge.swf', 'external2', '400', '300', '8', '#ffffff');
so.addParam('wmode', 'opaque');
so.addParam('allowScriptAccess', 'always');
so.write('externalFlash');
// ]]>
</script>
  1. まず、SWFObjectコードをexternal**というDIVで包む
  2. SWFObjectの第二引数をexternal**というIDにする
  3. allowScriptAccessをalwaysにする

僕が試した感じ、これでIE/FFともにうまくいきました。

Flash側↓

import flash.external.*; //←いちばん最初に書く
//
test_btn.onRelease = function() {
ExternalInterface.call('hogeFunc', hoge1);
};

Flashは最初にexternalクラスをインポートして、callメソッドでJS関数を呼び出すだけ。簡単。JS関数はcallメソッド(‘関数名’,’引数1’…)という形式になります。引数がなければcall(‘hogeFunc’);だけでも可。

最後にJS側↓

function hogeFunc(hoge1){
window.alert(hoge1)
}

これでJSとの融合もバッチリです。

追記:addCallback関数の説明はこちら

SWFObjectを使ったExternalInterfaceまとめ への1件のフィードバック

  1. ラボブログ より:

    いつか役に立ちそうな Flash × JavaScript

    スパイスラボ神部です。 flashでmixiアプリ作るためのポイントを調査 – プログラマー、再起動中 SWFObjectを使ったExternalInt…