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代碼
- var flashPlayer;
- function detectFlashPlayer( ) {
- if(navigator.appName.indexOf("Microsoft") != -1) {
- flashPlayer = window.objectId;
- }
- else {
- flashPlayer = window.document.embedName;
- }
- }
- //body onload
- //調用
- flashPlayer.showMessage( );
- //調用帶參數
- 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代碼
- 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");
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代碼
- try {
- fileReference.download(urlRequest, fileName);
- }
- catch (illegalOperation:IllegalOperationError) {
- // code to handle an illegal operation error
- }
- catch (security:SecurityError) {
- // 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);
==========================================================================