ActionScript 与 Javascript 互通

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. <script language="JavaScript">
  2. var flashPlayer;  
  3. function detectFlashPlayer( ) {  
  4.     if(navigator.appName.indexOf("Microsoft") != -1) {  
  5. flashPlayer = window.objectId;  
  6.     }  
  7.     else {  
  8. flashPlayer = window.document.embedName;  
  9.     }  
  10. }  
  11. </script>
  12. //body onload  
  13. //调用  
  14. flashPlayer.showMessage( );  
  15. //调用带参数  
  16. flashPlayer.showMessage("example message"); 
<script language="JavaScript">
var flashPlayer;
function detectFlashPlayer( ) {
	if(navigator.appName.indexOf("Microsoft") != -1) {
		flashPlayer = window.objectId;
	}
	else {
		flashPlayer = window.document.embedName;
	}
}
</script>

//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);

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值