as3 将类参数传递

在as3中要想将参数传递给另一个函数,写法function a(obj:object)这种写法是不正确的。

解决:增加两个类文件

package {

	/**
	 * @author bacon
	 * @version 1.0
	 * @change  
	 */
	
	public class EventDelegate {
		
		public function EventDelegate() {
			
		}
		
		public static function create(f:Function,...arg):Function {
            var F:Boolean=false;
            var _f:Function=function(e:*,..._arg){
            _arg = arg;
            if(!F){
                F = true;
                _arg.unshift(e);
			}
            f.apply(null, _arg);
            };
            return _f;
        }
	}
}

 

此类是增加参数的函数,他支持多个参数传递。

创建事件函数

package {
	import flash.events.Event;
	
	/**
	 * @author bacon
	 * @version 1.0
	 * @change  
	 */
	
	public class ScreenEvent extends Event{
		public var _data:Object;
		

		
		public function ScreenEvent(e_type:String,_data:Object)
		{
			super(e_type);
			this._data = _data;
		}
	}
	
}

 

使用方法:

要从navigation类传入show类

navigation中加入

EventDelegate.create(showphoto, photolist);
private function showphoto(event:MouseEvent,...arg):void
  {   
   dispatchEvent(new ScreenEvent("showphoto",arg[0]));
  }

 photolist为xml对象(任何对象都可以)。并将showphoto加入事件流中。

在main调用navigation中方法进行传参

navigation = new Navigation();//左	
navigation.addEventListener("showphoto", showphoto);

private function showphoto(e:ScreenEvent)
		{			
			show.showphoto(e._data);
		}

 这样就可以将参数传给show类了。

代码简写多,只是做学习。

你可能感兴趣的:(xml,F#,Flash)