addCallback 方法
AddCallback方法允許javascript調(diào)用flash時(shí)間上函數(shù),基本的語(yǔ)法結(jié)構(gòu)如下:
代碼:
ExternalInterface.addCallback(functionID:String,instance:Object,functionName:Function);
與call方法類(lèi)似,它也是一個(gè)靜態(tài)方法,它有三個(gè)參數(shù) · functionID - 從 JavaScript 調(diào)用 ActionScript 函數(shù)時(shí)可使用的名稱。此名稱不必與 ActionScript 方法的實(shí)際名稱匹配。 · instance - this 在該方法中被解析成的對(duì)象。此對(duì)象不一定是在其上可找到該方法的對(duì)象,您可以指定任何對(duì)象(或 null)。 · functionName - 要從 JavaScript 調(diào)用的 ActionScript 方法。 現(xiàn)在讓我們開(kāi)始一個(gè)例子,在這個(gè)例子中我們將使用flash調(diào)用javascript的命令來(lái)請(qǐng)示用戶輸入色值,當(dāng)色值輸入后點(diǎn)擊ok,對(duì)象返回到flash并更改它的色彩,如下方法: 1. 創(chuàng)建一個(gè)flash文檔命名為external2.fla. 2. 與第一個(gè)例子相同,創(chuàng)建兩層上層命名為as.下層命名為“內(nèi)容”。 3. 在內(nèi)容層拖動(dòng)一個(gè)按鈕組件至場(chǎng)景中,放在左上方,將label設(shè)為”變色”,實(shí)例名為change_butn. 4. 確保當(dāng)前在”內(nèi)容層”,繪制一個(gè)色值為0x000000的盒子,大小為100*100,當(dāng)然這個(gè)沒(méi)有限制。 5. 將這個(gè)方塊轉(zhuǎn)換為movieclip.實(shí)例名稱命名為rec_mc. 6. 在第一幀上輸入代碼如下:
代碼:
import flash.external.*; //改變方塊的色彩 function onChange(clr:Number) { var temp_color:Color = new Color(rec_mc); temp_color.setRGB(clr); } //允許javascript調(diào)用onChang函數(shù) ExternalInterface.addCallback("onChange", this, onChange); //打開(kāi)命今窗口 change_butn.clickHandler = function() { ExternalInterface.call("callPrompt", "你想用什么的色彩? (ex: 0xff0000)"); }
在代碼的前邊我們要先導(dǎo)入externalinterface類(lèi)包,然后我們創(chuàng)建一個(gè)能改變場(chǎng)景中方塊色彩的函數(shù),完成后,我們調(diào)用addCallback方法以使javascript可以調(diào)用flash的onChang函數(shù)。最后,我們針對(duì)按鈕創(chuàng)建事件來(lái)調(diào)用javascript命令。 你需要發(fā)布swf和html,然后用編輯軟件打開(kāi)編輯器,如果你只是從flash調(diào)用javascirpt,那么你什么也不用做。但是如果你需要使用javascirpt調(diào)用flash函數(shù),還有一些小的工作需要做。
在tilte標(biāo)簽的下方加入下面的javascript代碼:如下:
代碼:
<script language=JavaScript> var me; //代表swf的id //獲取正確的引用 function getID(swfID) { if (navigator.appName.indexOf("Microsoft") > -1) { me = window[swfID]; } else { me = document[swfID]; } } //下面這段調(diào)用onChang函數(shù)并返回到flash. function makeCall(str){ me.onChange(str); } //下面這個(gè)函數(shù)是被flash調(diào)用的。 function callPrompt(str){ makeCall(prompt(str)); } </script>
開(kāi)始,我們創(chuàng)建變量me來(lái)存放swf的引用。如果沒(méi)有它,我們不能調(diào)用flash函數(shù)。然后我們使用函數(shù)getID通過(guò)條件針對(duì)不同的瀏覽器來(lái)設(shè)置引用,之后,我們創(chuàng)建makeCall函數(shù),用來(lái)調(diào)用flash函數(shù),最后我們創(chuàng)建由flash來(lái)調(diào)用的函數(shù)callPromt().它將調(diào)用makeCall函數(shù)來(lái)發(fā)送信息返回到flash. 在html的body標(biāo)簽的屬性中加入onload,并設(shè)置它等于getID函數(shù),如下:
代碼:
<body bgcolor="#ffffff" onload="getID('external2');">
注意,當(dāng)我們?cè)O(shè)函數(shù)給onload事件,我們傳遞給它swf的id.它可以在swf的嵌入位置找到,現(xiàn)在,當(dāng)頁(yè)初始化完成后,函數(shù)getID將被調(diào)用,變量me就會(huì)被設(shè)置,以使javascript可以調(diào)用flash函數(shù)。 將文件上傳到服務(wù)器上,并進(jìn)行測(cè)試,當(dāng)你點(diǎn)擊按鈕并在提示中輸入色彩值,flash中的方塊色就會(huì)改變。如下:
演示文件
在彈出窗口時(shí)如果你沒(méi)有輸入色彩值,而是點(diǎn)擊了取消,會(huì)返回null空回flash.flash中的方塊仍會(huì)保持原色。 最終源文件下載:source
本人對(duì)上面的內(nèi)容進(jìn)行了一下整合,制作了一個(gè)終合范例,集成有顯示swf信息,獲取網(wǎng)址,調(diào)用對(duì)話框。
范例演示
出處:WebStudio
責(zé)任編輯:moby
上一頁(yè) flash8與javascript集成 [1] 下一頁(yè)
◎進(jìn)入論壇Flash專欄版塊參加討論
|