Posts Tagged “library”

SWFObjectを使うときに気をつけること

SWFObjectを使って書き出すのは基本なんですが、気をつけるべきことをいくつか。

まず、これが基本形。

var so = new SWFObject(swf/test.swf", "testID", "width", "height", "8", "#ffffff");
so.addParam("wmode", "transparent");
so.addParam("menu", "false");
//  document.write(so.getSWFHTML());
so.write("flashcontent1");
//追記:getSWFHTML使うとwinIEのアクティブコントロールにひっかかる

気をつけておきたいのがnoscript。しっかりnoscriptも書きましょう。

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関数の説明はこちら