本文部分內(nèi)容來自emllab,在后部分,加入了本人的一個整合范例
在過去的一年里,對于開發(fā)人員來說使用flash與javascript通訊總會碰到一些麻煩的事情,從flash調(diào)用javascript函數(shù)已經(jīng)沒有什么問題了,因為我們可以使用getURL方法來直接調(diào)用,但是要想使用javascript返回flash在許多瀏覽器上幾乎是不可能的。但是現(xiàn)在可以了。 Flash8的出現(xiàn),這件事就變的比較容易了。
The ExternalInterface API
之前我們使用flash調(diào)用javascript函數(shù),一般使用這樣的方法:
代碼:
getURL(“javascript:alert(‘hello webstudio.com.cn’);”);
但是使用這種方法從flash調(diào)用javascript函數(shù)仍存在許多困難。特別是在處理多個javascript函數(shù)調(diào)用問題上。ExternalInterface API可以與javascript實現(xiàn)無縫調(diào)用,并且它的能力達到可以在flash時間線使用。
在我們正式進入它的使用方法之前,我們需要確保在flash時間上可用,就要導入它的類向這樣:
代碼:
import flash.external.*;
現(xiàn)在它已經(jīng)允許我們做的第一件事就是可以調(diào)用javascript函數(shù)了。
Call 調(diào)用方法
call方法對于ExternalInterface對象來說是一個靜態(tài)方法,也就是說我們不需要使用ExternalInterface對象的實例來調(diào)用方法,我們可以直接通過對象類來調(diào)用,向這樣:
代碼: ExternalInterface.call(functionName:String,Parameters);
這個方法有兩個參數(shù): · functionName – 你想要調(diào)用的javascript函數(shù)名要以字符串的形式 · Parameters – 需要傳遞給javascript函數(shù)的參數(shù),用逗號分開,是可選的。
這些是基本的內(nèi)容,現(xiàn)在讓我們來看一個例子:
1. 創(chuàng)建一個flash文檔命名為external1.fla. 2. 創(chuàng)建兩個層上面的層命為AS,下面的層命名為”內(nèi)容” 3. 在內(nèi)容層里面,創(chuàng)建一個文本域,將它設(shè)置為輸入文本域,打開顯示邊框以方便你能看到,并給它取個名字為alert_txt,將它放在場景的左邊。 4. 仍然在內(nèi)容這一層上,拖動一個按鈕組件于場景中并把它放在動態(tài)文本的右邊,設(shè)置它的label為”Alert”并給它起個名字為alert_butn. 5. 選擇上方的as層在第一幀上輸入代碼, 6. //調(diào)用alert 7. 代碼:
import flash.external.*; alert_butn.clickHandler = function() { ExternalInterface.call("alert", alert_txt.text); }
前面部分的代碼是導入ExternalInterface類包。然后為按鈕組件設(shè)置事件,當點擊時調(diào)用javascript函數(shù),并將文本中輸入的文本通過externalInterface傳遞給javascript函數(shù)。 現(xiàn)在發(fā)布你的影片,將它和html放在服務器上,當你在服務器上測試時不論你在文本中輸入什么信息,它都將顯示在alert對話框中,但是如果你在本地測試,你可能就會發(fā)現(xiàn)當你點擊按鈕時,什么也沒發(fā)生,這是由flashplayer的安全特性造成的。
演示文件
上面這個范例是一個方法的例子,使用getURL方法也可以做到,然而externalinterface不只是能做到這些,除了發(fā)送信息給javascript,它還可以通過addCallback方法接收從javascript返回的信息。
出處:藍色理想
責任編輯:moby
上一頁 下一頁 flash8與javascript集成 [2]
◎進入論壇Flash專欄版塊參加討論
|