ActionScript 與 Javascript 互連

來源:互聯網
上載者:User

1、ActionScript調用JavaScript

call( ) 方法至少需要一個參數來指明javascript函數名稱

ExternalInterface.call("changeTitle");

如果JavaScript函數本身需要參數,在call( )方法參數中繼續添加,例如,changeTitle( ) 函數接受一個參數:
ExternalInterface.call("changeTitle", "ActionScript 3.0 Cookbook");

======================================================================

2、Javascript調用ActionScript

使用ExternalInterface.addCallback( ) 註冊ActionScript 函數,然後在JavaScript端進行調用。

addCallback( ) 方法接收兩個參數:第一個參數為String類型的函數名,瀏覽器將藉此名稱得知要調用的函數,第二參數為瀏覽器調用定義的函數名時要執行的實際ActionScript函數。下面的例子註冊了函數displayMessage ,在JavaScript中的別名為showMessage:
ExternalInterface.addCallback("showMessage", displayMessage);

瀏覽器中的Flash播放器有兩種類型:ActiveX(標籤) 和 plug-in(標籤)版本

例:

Html代碼

  1. var flashPlayer;  
  2. function detectFlashPlayer( ) {  
  3.     if(navigator.appName.indexOf("Microsoft") != -1) {  
  4. flashPlayer = window.objectId;  
  5.     }  
  6.     else {  
  7. flashPlayer = window.document.embedName;  
  8.     }  
  9. }  
  10. //body onload  
  11. //調用  
  12. flashPlayer.showMessage( );  
  13. //調用帶參數  
  14. flashPlayer.showMessage("example message"); 
//body onload//調用flashPlayer.showMessage( );//調用帶參數flashPlayer.showMessage("example message");

=========================================================================

3、通過html中標籤的param給swf傳遞參數

HTML部分需要在 標籤中添加一個標籤,

在ActionScript方面,可通過任何可視化組件都有的root.loaderInfo.parameters 屬性得到FlashVars傳遞進來的參數,root.loaderInfo.parameters 屬性是一個關聯陣列

=========================================================================

4、下載檔案

As代碼

  1. var fileReference:FileReference = new FileReference( );  
  2. var urlRequest:URLRequest = new URLRequest("http://www.myexamplesite.com/example.txt");  
  3. fileReference.download(urlRequest);  
  4. //download( ) 方法的第二個參數就是指定顯示在儲存對話方塊的檔案名稱  
  5. fileReference.download(urlRequest, "11.txt"); 
var fileReference:FileReference = new FileReference( );var urlRequest:URLRequest = new URLRequest("http://www.myexamplesite.com/example.txt");fileReference.download(urlRequest);//download( ) 方法的第二個參數就是指定顯示在儲存對話方塊的檔案名稱fileReference.download(urlRequest, "11.txt");

download( ) 方法最好放在try...catch 語句中執行,因為該方法可能會拋出異常,主要兩種異常:

IllegalOperationError和SecurityError。當儲存對話方塊已經開啟的情況下調用download( )方法會拋出IllegalOperationError,SecurityError異常是由於SWF不允許下載所導致。

例:

As代碼

  1. try {  
  2.     fileReference.download(urlRequest, fileName);  
  3. }  
  4. catch (illegalOperation:IllegalOperationError) {  
  5.     // code to handle an illegal operation error  
  6. }  
  7. catch (security:SecurityError) {  
  8.     // code to handle a security error  
try {fileReference.download(urlRequest, fileName);}catch (illegalOperation:IllegalOperationError) {// code to handle an illegal operation error}catch (security:SecurityError) {// code to handle a security error}

fileReference.addEventListener(IOErrorEvent.IO_ERROR, onIOError);

=========================================================================

5、下載檔案進度

fileReference.addEventListener(ProgressEvent.PROGRESS, onFileProgress);

private function onFileProgress(event:ProgressEvent):void {

    fileProgressField.text = event.bytesLoaded + " of " + event.bytesTotal + " bytes";

}

當下載完成時FileReference對象發出complete事件,類型為Event :

fileReference.addEventListener(Event.COMPLETE, onFileComplete);

=========================================================================

6、瀏覽對話方塊選擇的檔案

一、過濾

var fileFilter1:FileFilter = new FileFilter("Images", "*.png;*.gif;*.jpg");

var fileFilter2:FileFilter = new FileFilter("Documents", "*.txt;*.doc;*.pdf;*.rtf");

var fileFilter3:FileFilter = new FileFilter("Archives", "*.zip;*.tar;*.hqx");

var fileFilter4:FileFilter = new FileFilter("All", "*.*");

_fileReference.browse([fileFilter1, fileFilter2, fileFilter3, fileFilter4]);

二、選擇

當使用者選擇了檔案並點擊了Open按鈕後FileReference對象會發出select事件。

fileReference.addEventListener(Event.SELECT, onSelectFile);

//selectedFileTextField.text = fileReference.name;

fileReference.addEventListener(Event.CANCEL, onCancelBrowse);

==========================================================================

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.