小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

flash8與javascript集成

 ShangShujie 2007-06-11






本文部分內(nèi)容來自emllab,在后部分,加入了本人的一個(gè)整合范例,中文譯文轉(zhuǎn)載請注明本站出處.

        在過去的一年里,對于開發(fā)人員來說使用flash與javascript通訊總會碰到一些麻煩的事情,從flash調(diào)用 javascript函數(shù)已經(jīng)沒有什么問題了,因?yàn)槲覀兛梢允褂胓etURL方法來直接調(diào)用,但是要想使用javascript返回flash在許多瀏覽 器上幾乎是不可能的。但是現(xiàn)在可以了。
Flash8的出現(xiàn),這件事就變的比較容易了。J

The ExternalInterface API

        之前我們使用flash調(diào)用javascript函數(shù),一般使用這樣的方法:
代碼:
getURL(“javascript:alert(‘hello ’);”);

但是使用這種方法從flash調(diào)用javascript函數(shù)仍存在許多困難。特別是在處理多個(gè)javascript函數(shù)調(diào)用問題上。ExternalInterface API可以與javascript實(shí)現(xiàn)無縫調(diào)用,并且它的能力達(dá)到可以在flash時(shí)間線使用。

在我們正式進(jìn)入它的使用方法之前,我們需要確保在flash時(shí)間上可用,就要導(dǎo)入它的類向這樣:
代碼:
import flash.external.*;


現(xiàn)在它已經(jīng)允許我們做的第一件事就是可以調(diào)用javascript函數(shù)了。

Call 調(diào)用方法

call方法對于ExternalInterface對象來說是一個(gè)靜態(tài)方法,也就是說我們不需要使用ExternalInterface對象的實(shí)例來調(diào)用方法,我們可以直接通過對象類來調(diào)用,向這樣:
代碼:
ExternalInterface.call(functionName:String,Parameters);

這個(gè)方法有兩個(gè)參數(shù):
·    functionName – 你想要調(diào)用的javascript函數(shù)名要以字符串的形式
·    Parameters – 需要傳遞給javascript函數(shù)的參數(shù),用逗號分開,是可選的。
這些是基本的內(nèi)容,現(xiàn)在讓我們來看一個(gè)例子:
1.    創(chuàng)建一個(gè)flash文檔命名為external1.fla.
2.    創(chuàng)建兩個(gè)層上面的層命為AS,下面的層命名為”內(nèi)容”
3.    在內(nèi)容層里面,創(chuàng)建一個(gè)文本域,將它設(shè)置為輸入文本域,打開顯示邊框以方便你能看到,并給它取個(gè)名字為alert_txt,將它放在場景的左邊。
4.    仍然在內(nèi)容這一層上,拖動一個(gè)按鈕組件于場景中并把它放在動態(tài)文本的右邊,設(shè)置它的label為”Alert”并給它起個(gè)名字為alert_butn.
5.    選擇上方的as層在第一幀上輸入代碼,
6.    //調(diào)用alert
7.    
代碼:
import flash.external.*;
alert_butn.clickHandler = function() {
   ExternalInterface.call("alert", alert_txt.text);
}


前面部分的代碼是導(dǎo)入ExternalInterface類包。然后為按鈕組件設(shè)置事件,當(dāng)點(diǎn)擊時(shí)調(diào)用javascript函數(shù),并將文本中輸入的文本通過externalInterface傳遞給javascript函數(shù)。
現(xiàn)在發(fā)布你的影片,將它和html放在服務(wù)器上,當(dāng)你在服務(wù)器上測試時(shí)不論你在文本中輸入什么信息,它都將顯示在alert對話框中,但是如果你在本地測試,你可能就會發(fā)現(xiàn)當(dāng)你點(diǎn)擊按鈕時(shí),什么也沒發(fā)生,這是由flashplayer的安全特性造成的。

演示文件

上面這個(gè)范例是一個(gè)方法的例子,使用getURL方法也可以做到,然而externalinterface不只是能做到這些,除了發(fā)送信息給javascript,它還可以通過addCallback方法接收從javascript返回的信息。

addCallback 方法

AddCallback方法允許javascript調(diào)用flash時(shí)間上函數(shù),基本的語法結(jié)構(gòu)如下:
代碼:
ExternalInterface.addCallback(functionID:String,instance:Object,functionName:Function);

與call方法類似,它也是一個(gè)靜態(tài)方法,它有三個(gè)參數(shù)
·    functionID - 從 JavaScript 調(diào)用 ActionScript 函數(shù)時(shí)可使用的名稱。此名稱不必與 ActionScript 方法的實(shí)際名稱匹配。
·    instance - this 在該方法中被解析成的對象。此對象不一定是在其上可找到該方法的對象,您可以指定任何對象(或 null)。
·    functionName - 要從 JavaScript 調(diào)用的 ActionScript 方法。
現(xiàn)在讓我們開始一個(gè)例子,在這個(gè)例子中我們將使用flash調(diào)用javascript的命令來請示用戶輸入色值,當(dāng)色值輸入后點(diǎn)擊ok,對象返回到flash并更改它的色彩,如下方法:
1.    創(chuàng)建一個(gè)flash文檔命名為external2.fla.
2.    與第一個(gè)例子相同,創(chuàng)建兩層上層命名為as.下層命名為“內(nèi)容”。
3.    在內(nèi)容層拖動一個(gè)按鈕組件至場景中,放在左上方,將label設(shè)為”變色”,實(shí)例名為change_butn.
4.    確保當(dāng)前在”內(nèi)容層”,繪制一個(gè)色值為0x000000的盒子,大小為100*100,當(dāng)然這個(gè)沒有限制。
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);
//打開命今窗口
change_butn.clickHandler = function() {
   ExternalInterface.call("callPrompt", "你想用什么的色彩? (ex: 0xff0000)");
}


在代碼的前邊我們要先導(dǎo)入externalinterface類包,然后我們創(chuàng)建一個(gè)能改變場景中方塊色彩的函數(shù),完成后,我們調(diào)用 addCallback方法以使javascript可以調(diào)用flash的onChang函數(shù)。最后,我們針對按鈕創(chuàng)建事件來調(diào)用javascript命 令。
你需要發(fā)布swf和html,然后用編輯軟件打開編輯器,如果你只是從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>


開始,我們創(chuàng)建變量me來存放swf的引用。如果沒有它,我們不能調(diào)用flash函數(shù)。然后我們使用函數(shù)getID通過條件針對不同的瀏覽器來設(shè) 置引用,之后,我們創(chuàng)建makeCall函數(shù),用來調(diào)用flash函數(shù),最后我們創(chuàng)建由flash來調(diào)用的函數(shù)callPromt().它將調(diào)用 makeCall函數(shù)來發(fā)送信息返回到flash.
在html的body標(biāo)簽的屬性中加入onload,并設(shè)置它等于getID函數(shù),如下:
代碼:
<body bgcolor="#ffffff" onload="getID(‘external2‘);">

注意,當(dāng)我們設(shè)函數(shù)給onload事件,我們傳遞給它swf的id.它可以在swf的嵌入位置找到,現(xiàn)在,當(dāng)頁初始化完成后,函數(shù)getID將被調(diào)用,變量me就會被設(shè)置,以使javascript可以調(diào)用flash函數(shù)。
將文件上傳到服務(wù)器上,并進(jìn)行測試,當(dāng)你點(diǎn)擊按鈕并在提示中輸入色彩值,flash中的方塊色就會改變。如下。

演示文件

在彈出窗口時(shí)如果你沒有輸入色彩值,而是點(diǎn)擊了取消,會返回null空回flash.flash中的方塊仍會保持原色。
最終源文件下載(source)

本人對上面的內(nèi)容進(jìn)行了一下整合,制作了一個(gè)終合范例,集成有顯示swf信息,獲取網(wǎng)址,調(diào)用對話框.

范例演示


    本站是提供個(gè)人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多