javascript
as3是js和java_AS3与JS进行交互(一)
這個話題在網(wǎng)上應該說很好找,有很多這方面的資料。比者也看過一些,不過大部分都是AS2與JS進行交互。很少提到AS3,即使有,也讓人感覺淺嘗輒止。很多東西并沒有介紹的太清楚。所有筆者萌生了寫這樣一篇教程的想法!
提及AS3與外部腳本的交互,筆者認為可以總結成兩種。一是AS3調用外部函數(shù),二是外部腳本調用AS3函數(shù)。無外乎就這兩種。在調用函數(shù)的同時,我們還
可以向函數(shù)傳遞一些參數(shù)。這就達到了傳遞數(shù)據(jù)的目的。舉一個最簡單的例子。我們平時在網(wǎng)絡上看視頻的時候,這些用AS3制作的播放器就是由外部腳本(可能
是JS,也可能是ASP或其他腳本)傳遞給它的視頻地址。從而就簡化我們的后臺程序。有的人會問!你用播放器去讀取外部的XML數(shù)據(jù)不是也可以嗎?確實,
當時,當你有成千上萬個視頻的時候,你不可能輸入這么多數(shù)據(jù)。一是比較麻煩,二來是影響了網(wǎng)頁運行的速度。所以,AS3與外部腳本進行交互是非常重要的。
其實,我們做的絕大多數(shù)帶有交互性的FLASH程序都要多多少少與后臺的其他語言進行交互。這里,我們就以JS腳本來舉例說明交互的過程。當然,AS3與
JS腳本可以說有血緣關系,具體的大家可以去查看一下FLASH的發(fā)展歷史。好了!廢話不多說,我們這就開始講如何讓JS與AS3進行一些信息的交換。本
節(jié)中,我們只講解JS調用AS3中的函數(shù)。反向的調用我們將在下一節(jié)中進行講解!
首先,我們新建一個FLASH文檔,然后在舞臺上繪制一個動態(tài)文本,該文本的實例名稱為wen_txt。好了!美工的部分就算完成了(我們這里是一個非常簡單的實例,不要求太復雜。力求突出重點)!
現(xiàn)在,我們要在FLASH中建立一個允許被外部調用的函數(shù)。那么如何去建立聲明這樣一個函數(shù)呢?我們要使用到一個類,這個類的名字就是
ExternalInterface。很多人都沒有太注意過這個類。這個類實際上是在flash.external
包中。這個包是專門用來和外部容器進行通信的。那么對這個ExternalInterface類,它的官方解釋是“ExternalInterface
類是外部 API,在 ActionScript 和 Flash Player 的容器之間實現(xiàn)直接通訊的應用程序編程接口,例如,含有
JavaScript 的 HTML 頁。”很顯然,這里已經(jīng)提到了JS。好了!下面我們就來寫一下腳本吧!如下:
ExternalInterface.addCallback("abcd",yun);
function yun(zi:String):void{
wen_txt.text = zi;
}
我們看,建立一個可以被外部調用的函數(shù)實際上就是使用了ExternalInterface類的addCallback方法。我們可以從宏觀上這樣理解。
但實際上它的真正作用是將一個函數(shù)注冊為可從容器調用。實際上我們的FLASH端就這么簡單。好了!保存文件,發(fā)布。注意!這里,我發(fā)布出來的SWF文件
的文件名是ab.swf。
上面我們已經(jīng)將FLASH端的腳本寫好了,下面我們來編寫JS代碼,其實也是一個HTML網(wǎng)頁代碼,這個HTML代碼中包含JS代碼!如下:
FLASH與JS交互function pageInit() {
sendToActionScript("你好");
}
function sendToActionScript(value) {
window.ExternalInterfaceExample.abcd(value);
}
id="ExternalInterfaceExample" width="500" height="500"
>
好了!現(xiàn)在將這個網(wǎng)頁保存到和ab.swf同一文件夾下,然后運行這個網(wǎng)頁。當程序運行的時候,我們就可以看到FLASH中的動態(tài)文本會出現(xiàn)“你好”字樣!這個過程就是JS調用AS3函數(shù),同時向FLASH傳遞了一個參數(shù),或者說傳遞了一組數(shù)據(jù)。
關于這段JS代碼,我們就不多說了。因為涉及到很多JS腳本的只是。大家可以在網(wǎng)上查找相關的資料,就可以明白這段JS腳本的含義了!
本節(jié)我們就講解到這里,下一節(jié)我們講解,FLASH如何向JS傳遞參數(shù)!
AS3與JavaScript進行交互(二)2009-11-26 17:20?????? 書接上文,上次我們講到JS向FLASH傳遞參數(shù)。本節(jié)我們來講解FLASH向JS傳遞參數(shù)。
先說說原理吧。實際上我們所瀏覽的每一個網(wǎng)頁都可以看作是一個容器。那何為容器呢?說白了就是一個盒子。在這個盒子里面放著許多東西,包括網(wǎng)頁中的文字,
圖片,FLASH,腳本,按鈕,文本框等。所以,我們的FLASH如果想訪問網(wǎng)頁中的JS函數(shù),實際上就是訪問上一級中的函數(shù)。這種操作相對就要簡單一
些。因為我們的JS函數(shù)對網(wǎng)頁中的成員都是公開的,這個網(wǎng)頁中的任何元素都能夠調用這個JS函數(shù)。同樣,FLASH也擁有這樣的權限。那么好了!我們來看
看在網(wǎng)頁中具體是怎樣做的。
我們這次先來寫網(wǎng)頁代碼,因為網(wǎng)頁這邊是接受端。代碼如下:
FLASH與JS交互function sendToJavaScript(value) {
document.forms["form1"].output.value += "\n" + "ActionScript says: " + value;
}
id="ExternalInterfaceExample" width="500" height="500"
>
Initializing...
具體的什么意思筆者在這里就不多說了,屬于JS方面的知識,大家可以去查看相關資料。好了下面就是FLASH端的代碼了!我們先來做美工界面。畫一個輸入
文本,實例名為wen_txt,再做一個影片剪輯元件,實例名為an_mc。好了!美工部分做完了!我們來寫腳本。如下:
an_mc.addEventListener(MouseEvent.CLICK,chuan);
function chuan(evt:Event):void {
ExternalInterface.call("sendToJavaScript", wen_txt.text);
}
我們看,其實在FLASH中調用外部的JS函數(shù)還是用到了ExternalInterface類。而這次我們是使用的call方法。
好了!運行網(wǎng)頁,我們在FLASH的輸入文本中輸入一串文字,然后按一下按鈕。之后這段文字就會出現(xiàn)在網(wǎng)頁的文本框里面!
大家可以自己動手做一次,體會一下FLASH向JS傳遞參數(shù)的過程
總結
以上是生活随笔為你收集整理的as3是js和java_AS3与JS进行交互(一)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 三星 Galaxy 手机 100 倍 S
- 下一篇: 早报:谷歌Pixel 7a曝光 苹果Ho