Flash 10.1 LocalConnection的性能问题

Flash通过LocalConnection来处理两个Flash文件之间的通信,简单例子可以参考:使用LocalConnction在SWF之间通信。

升级Flash插件到10.1之后,发现应用变得很慢,其最终原因是在设置名称是使用”_”开头,而“_”正好是LocalConnection不可预知的不同域通信的标志。

LocalConnection在不同的域环境(同一个域中、具有可预知域名的不同域中、具有不可预知的不同域)使用情况不同:

1、同一个域。这是LocalConnector对象最简单的情况,只允许位于同一个域中的LocalConnection对象通信,在同一域通信,无需实施特殊的安全措施,只需根据connecionName参数的同一个值进行通信:

receiver.swf:

public function Init():void{ var conn:LocalConnection=new LocalConnection(); conn.client=this; try{ conn.connect("connectionName"); } catch(error:ArgumentError){ trace("connectionName exists"); } } public function testHandler(msg:String):void{ }
sender.swf:

var conn:LocalConnection;conn=new LocalConnection();conn.send("connectionName", "testHandler", "Hello World!");


2、可预知域名的不同域。当不同域中的两个Flash文件通信是,需要通过调用allowDomain()方法来运行在这两个不用域之内进行通信。在发送方Flash的send()方法使用接收方LocalConnection对象的域名限定连接名:

receiver.swf(在a.com域):

public function Init():void{ var conn:LocalConnection=new LocalConnection(); conn.allowDomain("www.b.com"); conn.client=this; try{ conn.connect("connectionName"); } catch(error:ArgumentError){ trace("connectionName exists"); }} public function testHandler(msg:String):void{}
sender.swf(在www.b.com域):

var conn:LocalConnection;conn=new LocalConnection();conn.send("a.com:connectionName", "testHandler", "Hello World!");


3、不可预知域名的不同域。LocalConnection通过allowDomain(*)允许从所有域的调用,也可以通过调用多次allowDomain()方法来添加允许的域.在不可以预知的不同域中,需要在connectName的名称之前添加下划线(“_”)。

receive.swf:

public function Init():void{ var conn:LocalConnection=new LocalConnection(); conn.allowDomain("*"); conn.client=this; try{ conn.connect("_connectionName"); } catch(error:ArgumentError){ trace("connectionName exists"); }} public function testHandler(msg:String):void{}
sender.swf:

var conn:LocalConnection;conn=new LocalConnection();conn.send("_connectionName", "testHandler", "Hello World!");
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值