2005-12-04

Delegate class委派类的应用

来源: 本站收集整理 作者:佚名 评论 0 条
  Delegate(委派) 类是一个非常有用的类,由Mike Chambers编写,它可以使组件的事件应用更轻易,这个类已经包含在”Ellipsis”中,也就是flashmx2004的升级版本中,在开始之前请先去下载升级版本flashmx2004updata_cn.exe,升级版本中包含有Delegate类,它使FLASH更加稳定,快速,更好。

通常情况下,你可能用两种方式来指定组件的事件类型,一种是使用addEventListener :指定事件给一个对象,一种是指事件定给一个函数。

指定事件给对象:
我们可以这样
代码:

var obj = new Object();
obj.click = function(evt)
{
trace(evt.target);
trace(this);
}
myBtn.addEventListener("click",obj);


指定事件给函数:
代码:

function myClickHander(evt){
trace(evt.target);
trace(this);
}
myBtn.addEventListener("click",myClickHander);


第一种方法的问题在于事件方法必须与事件同名(也说是上例中的click)。因此,假如你想指定几个组件事件给一同一个对象,你需要创建很笨而且冗长的条件语句。象这样:
代码:

obj = new Object();
obj.click = function(evt)
{
if(evt.target == 'myBtn')
{
trace('first button');
}
if(evt.target == 'myBtn2')
{
trace('second button');
}
}
myBtn.addEventListener("click",obj);
myBtn2.addEventListener("click",obj);



第二种方法的问题在于范围:“this”引用触发事件的组件,不管你的函数在哪里定义。因些假如你想指定几个事件给同一个函数,”this”所指的对象会在函数每次执行时都不同。与上面的情况非常相似,我们仍需要大量的条件语句。

Mike Chambers针对多个对象和不太好的范围问题提供了一流的解决方法,也就是Delegate 类。不需要直接设计侦听器,你可以指定一个delegate 定义来侦听事件,它会在正确的范围内调用真实的方法。下面展示通过一个按钮说时你如何来使用它。

(本文仅表明作者个人观点,不代表本站及其管理员立场.) 推荐 收藏 投稿 打印 返回 关闭
上一篇:Web2.0在企业中找到新空间 低谷之际需群体应战  
下一篇:FLASHMX2004-平铺底纹
    评论加载中…
代码:

import mx.utils.Delegate;
function myClickHandler(evt)
{
trace(evt.target);
trace(this);
}
myBtn.addEventListener("click", Delegate.create(this,myClickHandler));
共3页: 上一页 1 [2] [3] 下一页
 推荐文章
     

网站首页  -  网站地图 -   站长论坛  -  网站投稿  -    -  网站管理
Copyright © 2008 芜湖站长站 All Rights Reserved 皖ICP备07500611号