愚人呓语 eidiot's blog. My flapdoodles.

27八/06

AS3笔记(8)-LocalConnection

  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++;
}

  AS3的 connect() 方法已经没有返回值了,那么想在连接失败的时候尝试其它连接就只能通过捕获 ArgumentError 。

var conn:LocalConnection = new LocalConnection();
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");

  负责监听的方法:

private function onSendStatus(event:StatusEvent):void{
    
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() 调用的方法
    
}
}