[转]Flash 10.1 LocalConnection的性能问题

本文介绍了Flash中LocalConnection的使用方法及注意事项,包括同一域、可预知不同域和不可预知不同域三种情况下的通信实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

[url]http://www.cnblogs.com/zhaozhan/archive/2010/07/01/1769521.html[/url]

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


再次提醒下,在同一个域中使用LocalConection通信不要使用“_”开头来作为connectName。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值