`
womendu
  • 浏览: 1517082 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

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. 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");
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");

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

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
  9. }
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);

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

分享到:
评论

相关推荐

    MFC\C++与FLASH互通

    总结,C++/MFC与Flash的互通是通过ActiveX控件、COM接口、IDispatch和Flash的ExternalInterface实现的。这种通信机制使得开发者可以在桌面应用中充分利用Flash的交互性和动态性,提升用户体验。虽然现代Web开发倾向...

    Flash转盘AS .net互通

    3. ExternalInterface:允许Flash与JavaScript进行通信,然后JavaScript再与.NET服务器通信。这种方法适用于安全限制较严格的环境,如浏览器中的Flash内容。 在描述中提到的“纯AS脚本实现”,意味着所有的交互逻辑...

    EvalVM:一个基于 AS3 的 JavaScript 脚本编译解释器,FlashPlayer运行时执行eval操作,脚本与AS3类、变量互通

    EvalVM 是一个基于 AS3 的 JavaScript 脚本编译解释器,FlashPlayer运行时执行eval操作,脚本与AS3类、变量互通。输入的其实是 ecmascript 4 类型的脚本,输出的是二进制的编译文件。Eval的效率是原生的1/20左右(有...

    hprose 1.3文档

    它支持众多语言,例如.NET,Java,Delphi,Objective-C,ActionScript,JavaScript,ASP,PHP,Python,Ruby,C++,Perl等语言,通过Hprose可以在这些语言之间实现方便且高效的互通。 使用Hprose制作一个简单的...

    Hprose各语言开发PDF文档

    Hprose (High Performance Remote Object Service ...它支持众多语言,本资源为.NET, Java, Objective-C, ActionScript, JavaScript, ASP, PHP等语言的开发文档,通过 Hprose 可以在这些语言之间实现方便且高效的互通。

    Hprose 全名是高性能远程对象服务引擎.rar

    ActionScript ASP C++ Delphi/Free Pascal dotNET(C#, Visual Basic...) Golang Java JavaScript Node.js Objective-C Perl PHP Python Ruby 通过 Hprose,你就可以在这些语言之间方便高效的实现互通了。

    本项目是 Hprose 的 Python 版本实现 .rar

    ActionScript ASP C++ Dart Delphi/Free Pascal dotNET(C#, Visual Basic…) Golang Java JavaScript Node.js Objective-C Perl PHP Python Ruby … 通过 Hprose ,你就可以在这些语言之间方便高效...

    Red5的Web视频、音频系统开发

    - **编写播放器代码**:使用ActionScript或JavaScript等语言编写播放器逻辑,实现音视频的播放功能。 - **交互设计**:为了提升用户体验,还需要设计合理的用户界面和交互逻辑,比如播放控制条、音量调节等。 3. ...

    Hprose Java 使用说明

    它支持多种语言如.NET、Java、Delphi、Objective-C、ActionScript、JavaScript、ASP、PHP、Python、Ruby、C++、Perl等,通过Hprose可以在这些语言之间实现方便且高效的互通。 **Hprose**的特点在于其高效的数据传输...

    Hprose for php-PHP

    ActionScript ASP C++ Dart Delphi/Free Pascal dotNET(C#, Visual Basic...) Golang Java JavaScript Node.js Objective-C Perl PHP Python Ruby ... 通过Hprose,你就可以在这些语言之间方便高效的实现互通了。...

Global site tag (gtag.js) - Google Analytics