AS2的 connect() 方法返回一个 Boolean 值,如果尝试连接的 connectionName 已经被同一机器上的其他进程 connect 将返回 false ,可以尝试连接其他值。例如想要打开的swf按顺序依次连接 “1”,“2”,“3”……
var conn:LocalConnection = new LocalConnection();
var id:Number = 1;
while (!conn.connect(String(id))) {
id++;
}
var id:Number = 1;
while (!conn.connect(String(id))) {
id++;
}
AS3的 connect() 方法已经没有返回值了,那么想在连接失败的时候尝试其它连接就只能通过捕获 ArgumentError 。
var conn:LocalConnection = new LocalConnection();
var id:int = 1;
while(true){
try{
conn.connect(String(id));
break;
}catch(e:ArgumentError){
id++;
}
}
var id:int = 1;
while(true){
try{
conn.connect(String(id));
break;
}catch(e:ArgumentError){
id++;
}
}
同样的,send() 方法也不再返回 Boolean 值,只能通过事件监视发送状态
var sender:LocalConnection = new LocalConnection();
sender.addEventListener(StatusEvent.STATUS,onSendStatus);
sender.send("1","methodFunc");
sender.addEventListener(StatusEvent.STATUS,onSendStatus);
sender.send("1","methodFunc");
负责监听的方法:
private function onSendStatus(event:StatusEvent):void{
switch(event.level){
case "status":{
//发送成功
break;
}
case "error":{
//发送失败
break;
}
}
}
switch(event.level){
case "status":{
//发送成功
break;
}
case "error":{
//发送失败
break;
}
}
}
connect(”1″) 的 LocalConnection 需要设置一个对应的回调函数 methodFunc ,通过指定包含该回调函数的 Objcet ,即 client 属性,一般设置为 this 即可,如果是没有构造函数的”静态类”(所有的属性和方法都是 static )则需设置为该类的类名
public class TestConn{
private static var conn:LocalConnection;
public static function initConn():void{
conn = new LocalConnection();
conn.client = TestConn;
conn.connect("1");
}
public static function methodFunc():void{
//send() 调用的方法
}
}
private static var conn:LocalConnection;
public static function initConn():void{
conn = new LocalConnection();
conn.client = TestConn;
conn.connect("1");
}
public static function methodFunc():void{
//send() 调用的方法
}
}


看完了要说点啥么?