AS3與JS之間的簡單自定義參數(shù)通訊
發(fā)布時間:2013-07-09 12:36:18 作者:佚名
我要評論

一直沒去深入研究下AS3與JS的交互開發(fā)也就是SWF在html中的通信,最近出于項目要求被迫投入了,也在這里做個匯總
一直沒去深入研究下AS3與JS的交互開發(fā)也就是SWF在html中的通信,最近出于項目要求被迫投入了,也在這里做個匯總. 一:HTML中最快速的傳值方式 在HTML中插SWF時,可以跟個參數(shù),比如: files/home.swf?id=”21″ 在AS3里可以這樣去接收 var id:String=stage.loaderInfo.parameters["id"]; 這種傳值方式其實(shí)AS2的時候也是這樣做的,到AS3時使用parameters 屬性替換了AS1.0 和2.0 提供SWF文件參數(shù)作為主時間軸的技術(shù),所以我們改用一下AS3的取值方式就行了. 這種方式只能是單邊一次性傳值,有時候會用得到,但需要與JS相互通信就不行了,還有,只能接收字符串. 二:使用外部通信接口ExternalInterface 這也是AS2時代進(jìn)化來的,目前公認(rèn)的最靠譜的通信方式. 使用方法: 1.JS調(diào)用AS3的函數(shù) 確定JS調(diào)用AS3之前,要在AS3中綁定調(diào)用函數(shù),也就是說,只有AS3答應(yīng)給的方法JS才能調(diào)用. 使用:ExternalInterface.addCallback(functionName:String, closure:Function):void有兩個參數(shù): functionName:String — 容器可用于調(diào)用函數(shù)的名稱。 closure:Function — 要調(diào)用的 closure 函數(shù)。 這可能是一個獨(dú)立的函數(shù),或者可能是引用對象實(shí)例方法的 closure 方法。通過傳遞 closure 方法,回調(diào)實(shí)際上可以定向到特定對象實(shí)例的方法。復(fù)制代碼代碼如下:ExternalInterface.addCallback("getASVars",getASFun); private function getASFun(value:String):void { //得到JS傳來的值:value }好了,可以在JS中去調(diào)用這個方法了,調(diào)用前還要先取得插進(jìn)HTML的SWF的ID,我們在HTML中不管用什么方式插都可以設(shè)置ID 例如先通過id為”mov”來獲取對象,再調(diào)用上面綁定的方法:復(fù)制代碼代碼如下:function thisMovie(movieName) { if (navigator.appName.indexOf("Microsoft") != -1) { return window[movieName]; } else { return document[movieName]; } } thisMovie("mov").getASVars(value); 2.AS3調(diào)用JS的函數(shù)AS3調(diào)JS直接使用call就行了 使用:ExternalInterface.call(functionName:String, … arguments):* 這個方法有兩個參數(shù): functionName:String — 要在容器中調(diào)用的函數(shù)的名稱。 … arguments — 傳遞到容器中的函數(shù)的參數(shù)。 您可以指定零個或多個參數(shù),參數(shù)之間用逗號分隔。 這些參數(shù)可以是任何 ActionScript 數(shù)據(jù)類型。 當(dāng)調(diào)用 JavaScript 函數(shù)時,ActionScript 類型自動封裝到 JavaScript 類型中;當(dāng)調(diào)用其它某個 ActiveX 容器時,將在請求消息中對參數(shù)進(jìn)行編碼。 例如:復(fù)制代碼代碼如下:ExternalInterface.call("setToJS","paramTest"); //在JS中編寫這個setToJS的函數(shù) function senToJS(value){ alert(value)//輸出:paramTest }看起來很爽,但也不是完全靠譜,這個接口還是會挑食的,只有在以下瀏覽器中才支持: 瀏覽器 操作系統(tǒng) 操作系統(tǒng) Internet Explorer 5.0 及更高版本 Windows Netscape 8.0 及更高版本 Windows Macintosh Mozilla 1.7.5 及更高版本 Windows Macintosh Firefox 1.0 及更高版本 Windows Macintosh Safari 1.3 及更高版本 Macintosh 還有個安全沙箱的問題,如果出現(xiàn)安全沙箱警報,可以使用以下兩種修正方法: 1.在包含 HTML 頁中的 SWF 文件的 object 標(biāo)簽中,設(shè)置以下參數(shù): 2.在 SWF 文件中,添加以下 ActionScript:復(fù)制代碼代碼如下:Flash.system.Security.allowDomain(sourceDomain)
相關(guān)文章
CAD如何快速計算不規(guī)則圖形面積? cad不規(guī)則面積計算技巧
cad圖紙中的圖形很多都是不規(guī)則的圖形,在計算面積的時候,該怎么計算不規(guī)則圖形的面積呢?詳細(xì)請看下文介紹2025-03-13可聽的CAD圖紙? 浩辰CAD 2025語音注釋功能使用攻略
CAD圖紙不僅能看,還能聽,浩辰CAD 2025最新版中新增了一個語音注釋功能,設(shè)計師可以隨時錄制語音注釋來解釋設(shè)計意圖、標(biāo)注關(guān)鍵細(xì)節(jié)或分享設(shè)計思路,避免了書面注釋可能產(chǎn)2024-08-23CAD怎么畫乒乓球拍? CAD三維建模之乒乓球拍模型制作教程
很喜歡乒乓球,想要畫一個乒乓球拍子,該怎么畫立體的球拍呢?下面我們就來看看3d乒乓球拍的建模方法2024-08-16- 很喜歡蓮花,想要繪制立體的蓮花,該怎么繪制呢?下面我們就來看看使用cad繪制曲面蓮花模型的教程2024-08-16
CAD怎么樣去找坐標(biāo)? 關(guān)于CAD測坐標(biāo)這次全講明白啦
關(guān)于CAD測量坐標(biāo)相關(guān)問題,用戶問到的比較多的有:CAD坐標(biāo)為何顯示不全、坐標(biāo)顯示結(jié)果不一樣?以及不能精準(zhǔn)捕捉坐標(biāo)、電腦版怎么標(biāo)注坐標(biāo)/新增坐標(biāo)系等2024-08-16cad圖紙名稱和編號如何自動更新? 輕松搞定cad圖紙圖號自動編號
cad很復(fù)雜的圖紙,為了確保圖紙編號的規(guī)范性和統(tǒng)一性,并且避免手動編號過程中可能出現(xiàn)的錯誤或不一致,我們就可以自動更新圖名圖號2024-07-26AutoCAD 2025怎么下載安裝? AutoCAD 2025安裝圖文教程
CAD2025中新增了很多功能,想要下載使用這些新功能,該怎么操作呢?下面我們就來看看cad2025下載安裝技巧2024-07-20AutoCAD 2025更新了什么? CAD2025新增功能匯總
CAD2025發(fā)布后帶了很多新功能,有哪些功能比較實(shí)用呢?下面我們就來看看CAD2025新增功能匯總2024-07-20CAD中參數(shù)化約束怎么用? cad參數(shù)化約束的詳細(xì)用法
參數(shù)化圖形是一項用于使用約束進(jìn)行設(shè)計的技術(shù),約束是應(yīng)用于二維幾何圖形的關(guān)聯(lián)和限制,下面我們就來看看數(shù)化約束的使用方法2024-07-20CAD怎么轉(zhuǎn)換坐標(biāo)系? CAD相對坐標(biāo)和絕對坐標(biāo)相互切換的技巧
在CAD設(shè)計領(lǐng)域,坐標(biāo)輸入是日常操作的核心部分,熟練掌握它對于每位設(shè)計師來說都是至關(guān)重要的,其中,相對坐標(biāo)和絕對坐標(biāo)是兩種基礎(chǔ)且常用的坐標(biāo)方式,以下為您詳細(xì)解讀這兩2024-07-15