有时候需要在二个或者多的swf文件之间进行数据交换,比如你可能需要当用户点击 导航栏的每个链接之后,相应的主体swf显示相关内容,而这时,这二个相关的不是 在同一个swf文件中,这时候 需要使用LocalConnection.
LocalConnection 可以在flash6 中使用,当安装过flashcom之,LocalConnection 出现在动作面板的Communication ↓LocalConnection.LocalConnection的标识名称是_lc如下图所示:
但是使用LocalConnection ,并不一定需要flashcom,它可以单独使用,或者和flashcom 等一起使用.LocalConnection有一个构造器和四个方法,二个事件. 先来看一个绝对是本地连接的代码.
//要想使用LocalConnection连接对象,必须有一个LocalConnection对象.
var 链接=new LocalConnection();
//loadvars xml XMLSocket等通常连接一个网域(uri),本地连接比较简单,使用任意名字.仅是一个标识.
链接.connect("连接名字");
//在LocalConnection对象下定义一个方法,供LocalConnection.send调用.和NetStream.send等相似.
链接.方法=function (参数) {
trace(参数);}
//调用已经定义的方法.
链接.send("连接名字","方法","输出这个参数");
//输出: 输出这个参数
下面看一个例子,页面内部传递消息:
新建一个文件大小为300*200,放一个发布按钮和二个文本框(名称分别为输入框 显示框),在时间线的第一
桢加入以下代码.
//新建一个连接对象
连接对象=new LocalConnection();
//连接到swfa 文件2连接到swfa,需要注意的是命名不能含有特殊字符,命名也不能含有数字,因为会造成工作不稳定
连接对象.connect("swfa");
//发送消息
btn.onPress= function 发送消息() {
//文件2发送消息到 连接对象.send("swfa","接收消息",输入框.text);
连接对象.send("swfb","接收消息",输入框.text);}
//接收消息
连接对象.接收消息=function (消息) { 显示框.text=显示框.text+ newline+ 消息; }
文件1:
bgcolor=#FFFFFF WIDTH="300" HEIGHT="200" NAME="send2load2" ALIGN=""
TYPE="application/x-shockwave-flash"
PLUGINSPAGE="http://www.macromedia.com/go/getflashplayer"
文件2:
bgcolor=#FFFFFF WIDTH="300" HEIGHT="200" NAME="send2load" ALIGN=""
TYPE="application/x-shockwave-flash"
PLUGINSPAGE="http://www.macromedia.com/go/getflashplayer"
最后,简单介绍一下LocalConnection其他的方法事件资料:
close([连接名字]) 关闭一个连接(最近使用的连接)
domain()方法 参数无,返回一个本地域.
.onStatus([infoObject])事件 当LocalConnection状态变化的时候,比如错误等.触发这个事件.
.allowDomain([domain])事件 当LocalConnection收到一个连接请求或者发送.或者调用方法 或者接收时候自动发生.