Error #2044: 未处理的 StatusEvent:。 level=error, code=

在使用LocalConnection的时候,出现Error #2044: 未处理的 StatusEvent:。 level=error, code=这样的报错
以前是直接写在时间轴里的,没有报错。
这次是写在文档类。可是怎么搞都报错

例如.test1.swf加载了test2.swf,需要将test1的参数传到test2
1.加载test2.swf,然后在test2.swf建立一个连接,通知test1.swf已经建立完成(回调test1的t1Function()函数)
2.test1.swf收到test2.swf的回调之后也建立一个连接,并把参数发给test2.swf(回调test2r的t2Function(obj:Object)函数)

为了不重复写两次连接,所以写在一个as文件里
ConnectionObject.as
package com.zkl.net
{
	import flash.events.StatusEvent;
	import flash.net.LocalConnection;
	
	/**
	 * 建立一个连接名,然后发送一个连接信息
	 * @author zkl
	 * 2010-8-3 10:57
	 */
	public class ConnectionObject
	{
		//回调对像
		private var _client:Object; 
		//实例化连接
		private var _conn:LocalConnection;
		//准备一个 LocalConnection 对象,以接收来自 send() 命令(称为发送方 LocalConnection 对象)的命令。
		private var _connName:String;
		//接收的对像
		private var _connObj:String;
		//接收的句柄
		private var _connHandler:String;
		//接收的参数
		private var _connVar:Object;
		
		/**
		 * 使用当前的连接对像,建立一个连接名,然后发送一个连接信息
		 * @param	_client:当前服务对像
		 * @param	_connName:连接名
		 * @param	_connObj:要连接的对像
		 * @param	_connHandler:连接的句柄
		 * @param	_connVar:附带的参数
		 */
		public function ConnectionObject(_client:Object, _connName:String, _connObj:String, _connHandler:String, _connVar:Object = null):void
		{
			this._client = _client;
			
			this._connName = _connName;
			
			this._connObj = _connObj;
			
			this._connHandler = _connHandler;
			
			this._connVar = _connVar;
			
			init();
		}
		
		/**
		 * 建立连接
		 */
		private function init():void
		{
		    _conn = new LocalConnection;
			_conn.client = _client;
			_conn.allowDomain("*");
			try {
				_conn.connect(_connName);
			}catch (err:ArgumentError) {
				trace(err);
			}
		}
		
		/**
		 * 开始连接
		 */
		public function isConnection():void
		{
		    if (_connVar == null) {
				_conn.send(_connObj, _connHandler);
			}else {
				_conn.send(_connObj, _connHandler, _connVar);
				
			}	
			_conn.addEventListener(StatusEvent.STATUS, onStatus);
		}
		
		/**
		 * 关闭连接
		 */
		public function connClose():void
		{
		    _conn.close();
			_conn = null;
		}
		
		/**
		 * 连接状态
		 * @param	e
		 */
		public function onStatus(e:StatusEvent):void {
			//_conn.removeEventListener(StatusEvent.STATUS, onStatus);
			switch(e.level) {
				case "status":
					trace(_client + "发送成功.");
					break;
				case "error":
					trace(_client + "发送失败!");
					break;
			}
		}
	}
}


这是test1.swf的文档类
package 
{
	import com.zkl.net.ConnectionObject;
	import flash.display.MovieClip;
	import flash.display.Loader;
	import flash.net.URLRequest;
	import flash.events.Event;
	/**
	 * ...
	 * @author zkl
	 */
	public class Test1 extends MovieClip 
	{
		private var co:ConnectionObject;
		public function Test1() {
			var loader:Loader = new Loader();
			var movieUrl:URLRequest = new URLRequest("test2.swf");
			loader.load(movieUrl);
			loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadComplete);

connObject();//------------------------------1
		}
		public function loadComplete(e:Event):void {
			addChild(e.target.content);
			//connObject();//-----------------------2
		}
		public function connObject():void {
			co = new ConnectionObject(this, "t2", "t1", "t2Function", { totalUnit:10 } );
		}
		public function t1Function():void {
			co.isConnection();
			co.connClose();
		}
		
	}
	
}


//注意1和2不能调换,如果调换了就会出现前面那的错,主要是因为test2.swf还没加载完成之前,test1.swf要先做连接准备,不然test2.swf就会回调不到test1.swf的函数

这是test2.swf的文档类
package 
{
	import com.zkl.net.ConnectionObject;
	import flash.display.Loader;
	import flash.display.MovieClip;
	import flash.events.Event;
	import flash.net.URLRequest;
	
	/**
	 * ...
	 * @author zkl
	 */
	public class Test2 extends MovieClip 
	{
		private var co:ConnectionObject;
		public function Test2() {
			co = new ConnectionObject(this, "t1", "t2", "t1Function");
			co.isConnection();
		}
		public function t2Function(obj:Object):void {
			co.connClose();
			trace(obj.totalUnit);
		}
		
	}
	
}


请注意上红色的那段

你可能感兴趣的:(.net,Flash)