国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > JS > 正文

20.4.在JavaScript中調用ActionScript方法函數

2024-09-06 12:31:22
字體:
來源:轉載
供稿:網友
20.4.1 問題
我想在HTML 里調用該HTML 包含的Flex 應用程序的ActionScript 方法。
20.4.2 解決辦法
使用ExternalInterface 在JavaScript 里設置對Flex 的回調方法并且在JavaScript 里調用ActionScript 方法。
20.4.3 討論
ExternalInterface 類不僅僅封裝了運行時與JavaScript 通信所需的功能,同時也包含了從JavaScript 內調用ActionScript 方法所有功能。

在JavaScript 調用ActionScript 方法之前,你需要為開放給JavaScript 調用的ActionScript 方法注冊一個回調函數。回調函數通過ActionScript 的ExternalInterface 類來注冊。回調函數為JavaScript 方法提供一個對ActionScript 方法的映射。

該例示范如何為這三個ActionScript 方法函數注冊回調方法。
+展開
-ActionScript
private function registerCallbacks() : void
{
ExternalInterface.addCallback( "function1", callback1 );
ExternalInterface.addCallback( "function2", callback2 );
ExternalInterface.addCallback( "function3", callback3 );
}

這些方法的對應ActionScript 方法為:
+展開
-ActionScript
private function callback1() : void
{
Alert.show( "callback1 executed" );
}
private function callback2( parameter : * ) : void
{
Alert.show( "callback2 executed: " + parameter.toString() );
}
private function callback3() : Number
{
return Math.random()
}

注意到callback1 是一個可調用的簡單ActionScript 方法。它沒有參數也沒有返回值。callback2需要一個單參數,而callback3 則返回一個隨機生成的數值。

當你想要從JavaScript 里面調用這些方法的時候,必須使用回調別名調用JavaScript 方法。

下面的JavaScript 代碼將展示如何調用已注冊開放的ActionScript 函數。
+展開
-JavaScript
function invokeFlexFunctions()
{
var swf = "mySwf";
var container;
//alert(navigator.appName); //不加這個測試不通過,不知為何,Firefox 均不通過
if (navigator.appName.indexOf("Microsoft") >= 0)
{
container = document;
}
else
{
container = window;
}
//alert(container[swf]); //在FireFox,這個是undefined
container[swf].function1();
container[swf].function2( "myParameter" );
var result = container[swf].function3();
alert( result );
}

當被嵌入到HTML 頁面時,swf 包含該Flex 應用程序的名稱(name 屬性,在本節例子中為mySwf)。該腳本做的第一件事是基于瀏覽器的類型獲取到該JavaScript DOM 的引用。在腳本有了正確的瀏覽器DOM 后,它就可以根據注冊回調的時候聲明的公共開放映射關系來調用Flex 方法。

通過調用JavaScript 內Flex 應用程序實例的function1 回調函數來簡單調用ActionScript 的callback1 方法。
+展開
-JavaScript
container[swf].function1();

該方法被調用后,Flex 應用程序里會顯示一個alert 信息。

通過調用function2 回調函數并傳入一個值,即可簡單調用ActionScript 方法callback2:
+展開
-JavaScript
container[swf].function2( "myParameter" );

調用的時候,該例會在Flex 應用程序里彈出一個Alert 窗口來顯示JavaScript 調用的時候指定的參數值。

下面的例子展示如何從Flex 返回值到JavaScript 中。function3 回調函數調用callback3ActionScript 方法。該ActionScript 方法返回一個隨機生成的數值給JavaScript。

當調用callback3 時,Flex 生成一個隨機數,并返回給JavaScript。然后該值會顯示在一個JavaScript 的alert 窗口中。例如:
+展開
-JavaScript
var result = container[swf].function3();
alert( result );
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 塔城市| 秭归县| 娱乐| 南皮县| 新乡县| 元江| 始兴县| 城市| 通辽市| 桃源县| 犍为县| 城固县| 阳新县| 遂川县| 白朗县| 临武县| 阳曲县| 长兴县| 安义县| 涿州市| 化州市| 涟水县| 舟山市| 湘阴县| 寿阳县| 靖西县| 泸州市| 沈阳市| 宁国市| 辽中县| 德保县| 红安县| 阳曲县| 广南县| 达州市| 沧州市| 曲阳县| 玉树县| 大港区| 厦门市| 曲阳县|