[转]使用LocalConnction在SWF之间通信

[url]http://www.cnblogs.com/zhaozhan/archive/2010/06/23/1763046.html[/url]

使用LocalConnection类可以创建一个LocalConnection对象,该对象可以在一个SWF文件中或多个SWF文件间,调用另一个LocalConnection对象中的方法。通过本地连接,可以在SWF文件之间进行通信。LocalConnection对象只能在运行于用一台客户端计算机上的SWF文件之间进行通信,但这些SWF文件可以在不同的应用程序中运行。例如,一个SWF文件在浏览器中运行,而另一个SWF文件放到文件应用程序中运行。
在两个SWF文件之间进行通信,一个SWF文件被称为发送方SWF文件,此文件包含要调用要调用的方法。发送方SWF文件必须包含一个LocalConnection对象和对send()方法的调用。另一个SWf文件被称为接收方SWF文件,此文件为调用方法的文件,接收方SWF文件必须包含另一个LocalConnection对象和对connect()方法的调用。
简单示例:
发送方SWF,在Application创建完成初始化LocalConnection(),并对通信状态做监听,按钮btnSend触发send()方法。
conn.send("LocalConnectionTest", "testHandler", "Hello World!"); LocalConnectionTest为接收方SWF的LocalConnection,testHandler为接收方SWF的一个方法,后面跟的是传递给testHandler的参数。


<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="Init()">
<mx:Script>
<![CDATA[
import flash.net.LocalConnection;

private var conn:LocalConnection;
public function Init():void{
conn=new LocalConnection();
conn.addEventListener(StatusEvent.STATUS, onStatus);
}

public function Send():void{
conn.send("LocalConnectionTest", "testHandler", "Hello World!");
}

private function onStatus(event:StatusEvent):void {
switch (event.level) {
case "status":
trace("send()成);
break;
case "error":
trace("send()失);
break;
}
}
]]>

</mx:Script>
<mx:Canvas>
<mx:Button id="btnSend" label="测 click="Send()"/>
</mx:Canvas>
</mx:Application>

接收方SWF,首先初始化LocalConnection(),通过connect()方法创建名为LocalConnectionTest的LocalConnection(),名称必须是唯一的,粗犷一存在相同的名称创建时候会报参数错误。testHandler()供发送方SWF调用。


<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="Init()">
<mx:Script>
<![CDATA[
import flash.net.LocalConnection;

private var conn:LocalConnection;
public function Init():void{
conn=new LocalConnection();
conn.client=this;
try{
conn.connect("LocalConnectionTest");
}
catch(error:ArgumentError){
trace("名ocalConnectionTest的Wf对);
}
}

public function testHandler(msg:String):void{
lbInfo.text="Receiver Info:"+msg;
}
]]>
</mx:Script>

<mx:Label id="lbInfo"/>
</mx:Application>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值