flash使用的actionscript跟javascript是很是相通的,下面描述如何互相調用函數:
1:javascript調用flash中的函數
在flash的腳本中增長
代碼:import flash.external.ExternalInterface;
假定要調用的函數是hello,as代碼以下
代碼:function hello(){
return "hello";
}
ExternalInterface.addCallback("hello", this, hello);
//第一個參數爲導出函數名,第三個參數爲as的函數名
這樣就能夠在js中調用as的hello函數了
2:flash調用js的函數
ExternalInterface.call("hello2", "jacky");
//第一個參數是js的函數名,後面的是js函數的參數
3:如何互相調用
html代碼以下:
代碼:<object type="application/x-shockwave-flash" data="test.swf" width="525" height="390" name="test">
<param name="allowScriptAccess" value="sameDomain" />
<param name="movie" value="test.swf" />
<param name="quality" value="high" />
<param name="scale" value="noScale" />
<param name="wmode" value="transparent" />
</object>
function callFromFlash() {
var a=thisMovie("test").hello();
alert(a);
}
function thisMovie(movieName) {
if (navigator.appName.indexOf("Microsoft") != -1) {
return window[movieName]
}
else {
return document[movieName]
}
}
最近開發網站時遇到一個問題,如何與FLASH裏的AS腳本進行交互?
須要在Flash裏讀取網頁JavaScript裏的值,用於控制兩個Flash協同顯示內容。
最後終於在Flash找到了ExternalInterface類,要求環境:AS 1.0,Flash Player 8.0以上
1、在網頁中經過JavaScript調用Flash裏的ActionScript:
能夠經過ExternalInterface的addCallback方法,在Flash裏註冊一個能夠供網頁上的JavaScript或ActiveX調用的方法,具體代碼以下:
程序代碼
import flash.external.*;
var methodName:String = "PlayBB";
var instance:Object = null;
var method:Function = playB;
var ws:Boolean = ExternalInterface.addCallback(methodName, instance, method);
在JavaScript中調用時,須要爲Flash所在的Object標籤設置一個ID,而且設置allowScriptAccess屬性,示例代碼以下:
程序代碼
<object id="topFlash" name="topFlash" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0" width="686" height="101">
<param name="movie" value="_top.swf" />
<param name="quality" value="high" />
<param name="allowScriptAccess" value="always" />
<embed allowScriptAccess="always" src="_top.swf" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="686" height="101"></embed>
</object>
網頁中的JavaScript具體的調用示例:
程序代碼
function thisMovie(movieName) {
if (navigator.appName.indexOf("Microsoft") != -1) {
return window[movieName]
}
else {
return document[movieName]
}
}
("topFlash").PlayBB();
2、在Flash的ActionScript中調用網頁裏的JavaScript:
直接使用ExternalInterface的Call方法就能夠了,示例代碼以下:
程序代碼
import flash.external.*;
var obj:Object = ExternalInterface.Call("JavaScript方法", "參數");
參數能夠是任何As中的類型,在調用時Flash會自動封裝,多參數使用,分隔。javascript