使用...(rest) 扩展Event参数对象属性

大家都知道,当发生事件时,Event对象将作为参数传递给事件侦听器,但Event对象将作为参数的属性是有限的。如果要传递特殊参数,一般会想到通过自定义事件类来实现。下面介绍一种更简单的方法:使用...(rest) 参数来扩展Event参数对象属性。

下面自定义了一个事件代理类:

package {
	public class EventDelegate
	{
		public static function create(f : Function,... arg) : Function {	
			var isSame : Boolean = false;			
			var _f : Function = function(e : *,..._arg):void{				
				_arg = arg;				
				if(!isSame) {					
					isSame = true;					
					_arg.unshift(e);				
				}				
				f.apply(null, _arg);
			};	
			return _f;	
		}		
		public static function toString() : String {			
			return "Event Delegate";		
		}	
	}
}

使用方法很简单:addEventListener(事件类型, EventDelegate.create(侦听器函数, 参数)),用法有点类似AS2中的Delegate类。

上一篇上一篇: 使用arguments对象实现递归
下一篇下一篇: 让mssql2000的备份文件兼容mssql2005
来自文章来自: 本站原创
引用引用通告: 查看所有引用 | 我要引用此文章
标签Tags: Actionscript3
相关相关日志:
评论: 0 | 引用: 0 | 查看次数: -
发表评论
昵 称:
密 码: 游客发言不需要密码.
邮 箱: 邮件地址支持Gravatar头像,邮箱地址不会公开.
网 址: 输入网址便于回访.
内 容:
验证码:
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.
字数限制 1000 字 | UBB代码 开启 | [img]标签 关闭