FlashとJavaScriptの連携 その1
結構ありがちな話ですが、FlashとJavaScriptの連携方法です。
JavaScriptよりFlashのメソッドを呼び出す場合
Flash側
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" initialize="init()" width="100" height="100">
<mx:Script>
<![CDATA[
import mx.controls.*;
public function init():void{
// 第一引数はJavaScriptから呼ばれるメソッド名
// 第二引数はメソッド
ExternalInterface.addCallback("showMessage", function(message:String):void{
Alert.show(message);
});
}
]]>
</mx:Script>
</mx:Application>
JavaScript側
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" id="Test" width="333" height="124"codebase="http://fpdownload.macromedia.com/get/flashplayer/current/swflash.cab">
<param name="movie" value="Test.swf" />
<param name="quality" value="high" />
<param name="bgcolor" value="#869ca7" />
<param name="allowScriptAccess" value="sameDomain" />
<embed src="Test.swf" quality="high" bgcolor="#869ca7"
width="333" height="124" name="Test" align="middle"
play="true"
loop="false"
quality="high"
allowScriptAccess="sameDomain"
type="application/x-shockwave-flash"
pluginspage="http://www.adobe.com/go/getflashplayer">
</embed>
</object>
<input onclick="getElementById('Test').showMessage('TEST');" type="button" value="click me!" />
こんな感じです。
JavaScriptからは
window[movieName](IE)
もしくは
document[movieName](その他)
でFlashObjectにアクセスするように書かれているサイトもあったのですが、getElementByIDでIE7、FireFox3はそれぞれいけそう。
Posted in Flash | No Comments
