as3是js和java_AS3与JS进行交互(一)

这个话题在网上应该说很好找,有很多这方面的资料。比者也看过一些,不过大部分都是AS2与JS进行交互。很少提到AS3,即使有,也让人感觉浅尝辄止。很多东西并没有介绍的太清楚。所有笔者萌生了写这样一篇教程的想法!

提及AS3与外部脚本的交互,笔者认为可以总结成两种。一是AS3调用外部函数,二是外部脚本调用AS3函数。无外乎就这两种。在调用函数的同时,我们还

可以向函数传递一些参数。这就达到了传递数据的目的。举一个最简单的例子。我们平时在网络上看视频的时候,这些用AS3制作的播放器就是由外部脚本(可能

是JS,也可能是ASP或其他脚本)传递给它的视频地址。从而就简化我们的后台程序。有的人会问!你用播放器去读取外部的XML数据不是也可以吗?确实,

当时,当你有成千上万个视频的时候,你不可能输入这么多数据。一是比较麻烦,二来是影响了网页运行的速度。所以,AS3与外部脚本进行交互是非常重要的。

其实,我们做的绝大多数带有交互性的FLASH程序都要多多少少与后台的其他语言进行交互。这里,我们就以JS脚本来举例说明交互的过程。当然,AS3与

JS脚本可以说有血缘关系,具体的大家可以去查看一下FLASH的发展历史。好了!废话不多说,我们这就开始讲如何让JS与AS3进行一些信息的交换。本

节中,我们只讲解JS调用AS3中的函数。反向的调用我们将在下一节中进行讲解!

首先,我们新建一个FLASH文档,然后在舞台上绘制一个动态文本,该文本的实例名称为wen_txt。好了!美工的部分就算完成了(我们这里是一个非常简单的实例,不要求太复杂。力求突出重点)!

现在,我们要在FLASH中建立一个允许被外部调用的函数。那么如何去建立声明这样一个函数呢?我们要使用到一个类,这个类的名字就是

ExternalInterface。很多人都没有太注意过这个类。这个类实际上是在flash.external

包中。这个包是专门用来和外部容器进行通信的。那么对这个ExternalInterface类,它的官方解释是“ExternalInterface

类是外部 API,在 ActionScript 和 Flash Player 的容器之间实现直接通讯的应用程序编程接口,例如,含有

JavaScript 的 HTML 页。”很显然,这里已经提到了JS。好了!下面我们就来写一下脚本吧!如下:

ExternalInterface.addCallback("abcd",yun);

function yun(zi:String):void{

wen_txt.text = zi;

}

我们看,建立一个可以被外部调用的函数实际上就是使用了ExternalInterface类的addCallback方法。我们可以从宏观上这样理解。

但实际上它的真正作用是将一个函数注册为可从容器调用。实际上我们的FLASH端就这么简单。好了!保存文件,发布。注意!这里,我发布出来的SWF文件

的文件名是ab.swf。

上面我们已经将FLASH端的脚本写好了,下面我们来编写JS代码,其实也是一个HTML网页代码,这个HTML代码中包含JS代码!如下:

FLASH与JS交互

function pageInit() {

sendToActionScript("你好");

}

function sendToActionScript(value) {

window.ExternalInterfaceExample.abcd(value);

}

id="ExternalInterfaceExample" width="500" height="500"

>

好了!现在将这个网页保存到和ab.swf同一文件夹下,然后运行这个网页。当程序运行的时候,我们就可以看到FLASH中的动态文本会出现“你好”字样!这个过程就是JS调用AS3函数,同时向FLASH传递了一个参数,或者说传递了一组数据。

关于这段JS代码,我们就不多说了。因为涉及到很多JS脚本的只是。大家可以在网上查找相关的资料,就可以明白这段JS脚本的含义了!

本节我们就讲解到这里,下一节我们讲解,FLASH如何向JS传递参数!

AS3与JavaScript进行交互(二)2009-11-26 17:20       书接上文,上次我们讲到JS向FLASH传递参数。本节我们来讲解FLASH向JS传递参数。

先说说原理吧。实际上我们所浏览的每一个网页都可以看作是一个容器。那何为容器呢?说白了就是一个盒子。在这个盒子里面放着许多东西,包括网页中的文字,

图片,FLASH,脚本,按钮,文本框等。所以,我们的FLASH如果想访问网页中的JS函数,实际上就是访问上一级中的函数。这种操作相对就要简单一

些。因为我们的JS函数对网页中的成员都是公开的,这个网页中的任何元素都能够调用这个JS函数。同样,FLASH也拥有这样的权限。那么好了!我们来看

看在网页中具体是怎样做的。

我们这次先来写网页代码,因为网页这边是接受端。代码如下:

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函数还是用到了ExternalInterface类。而这次我们是使用的call方法。

好了!运行网页,我们在FLASH的输入文本中输入一串文字,然后按一下按钮。之后这段文字就会出现在网页的文本框里面!

大家可以自己动手做一次,体会一下FLASH向JS传递参数的过程

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值