Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1726874
  • 博文数量: 358
  • 博客积分: 2180
  • 博客等级: 大尉
  • 技术积分: 1810
  • 用 户 组: 普通用户
  • 注册时间: 2010-05-17 13:47
文章分类

全部博文(358)

文章存档

2016年(17)

2015年(55)

2014年(9)

2013年(67)

2012年(181)

2011年(29)

分类: 系统运维

2012-02-27 17:23:53

你可以这样理解事件类: 1.第一步,首先忘记你学到的任何关于事件类的知识,不知道有这么一回事,然后只知道FLASH有个内置类,名叫EVENT 2.第二步,来看这个类有什么——它有很多很多常数属性,比如COMPLETE,CLOSE,CLEAR等等。那么,这些参数干什么用的呢?很明确的告诉你,flash已经用掉了,用来标记一些flash已经设计好的事件——完成某件事、关闭某个东西、清除某个东西。 3.第三步,来看这个类能干什么——这些已经被标记好的事件,通常在一些常用内置类里面已经被注册好了。比如,loader类用COMPLETE表示完成了读取。当你想用到这个事件时,只需要在用的地方把这个事件调出来就行了——怎么调呢?addEventListener(事件的标记,触发标记后要做的事情)。 4.第四步,flash提供的这些事件不够我用怎么办?好办,自己来做一个事件呗!——怎么做?那你首先得让flash知道你这是个事件吧——事件的标记方法是内置事件类已经做好了,至于怎么实现那就不是你操心的事了,反正继承了event就是一个事件,这就对了。所以,你需要做的第一件事就是先把flash强大的event给继承出来。假设这个事件叫Cevent! public class Cevent extends Event { public function Cevent(type:String):void { super(type); } } 5.第五步,继承出来以后怎么办?“flash怎么做的,我就怎么做呗!”是的,那边的小朋友很聪明,flash是怎么做的?对了,先添加一个标记。与flash一样,你在这个继承的类里声明了一个常数,为了遵从伟大的程序员们的传统,他们说常数最好用大写,你也就用了大写,假设是“MYGOD”。但同时,为了尊从伟大的flash的传统,我给了这个常数一个字符串的值-“mygod”(其实,如果你不尊重传统也无所谓,标记是什么?标记跟你的名字一样,就是让别人认得你而已,你说你叫“123456”,那么我说“123456”的时候就是指你) 于是,一个事件的标记就出来了: public static const MYGOD:String="mygod"; 6.第六步,事件就这样定义行了吗?当然还不行!你的确声称你有个“MYGOD”事件,但关键是这个事件究竟是谁弄出来的?怎么弄的?天知道你知道...但是flash不知道。所以,你就得告诉flash,这个事件是哪个无聊的类整出来的,是怎么整出来的。假设某个无聊类叫god,god弄出了这个MYGOD事件,god是事情的元凶,因此你就必须指定这个元凶。而所有的事件元凶都一个妈生的,这个妈叫“EventDispatcher”类,也是flash里一个内置类。现在简单了吧~咱们继续继承。 public class god extends EventDispatcher 7.第七步,指定了元凶还是不行,他不肯承认他的罪行,因为你没说他在什么地方搞出了这个事件。所以,我得给他一个函数,在这个函数中把这个事件点名出来。这样它才是名副其实的事件发送者。假设,god有个godispig函数,是专门搞这个事的函数,那么就这么来指证它。 public function godispig():void { dispatchEvent(new Cevent(Cevent.MYGOD)) } 这段代码的意思就是,一旦你做godispig这件事(就是调用这个方法),你就触发了MYGOD事件! 8,第八步,还没完???!是的,当然还没玩,上面这个god类仅仅是有了犯事的可能,但不能因为人家有可能出轨,我就说它出轨了吧。所以,正真触发这件事的不是这个类本身,而是你在其他地方引用这个类,并调用这个函数时才会出事。那么,用什么方法呢?哈~那个小朋友又举手了,好~你说!“flash怎么做的,我就怎么做呗!”哇!小朋友,你真是个天才啊!!!没错,用我们的老朋友addEventListener(事件的标记,触发标记后要做的事情)。具体点就是addEventListener(Cevent.MYGOD,触发标记后要做的事情)。当我在某个类中实例化了god类,那么这个实例一旦调用godispig这个函数,怎么样?!他就犯事了!!!!犯事要干嘛?要执行“触发标记后要做的事情”。此时,你要杀要砍要奸要抢就随你便了,全部到那个触发的事情里面去做吧。——这就是事件,而且是标准的自定义事件...至于,你还要给这个事件填油加醋什么的,也好办,到你的自定义类里面再写几个变量,比如info什么的, public function Cevent(type:String,inf:String=""):void { super(type); info=inf; } 这样,当你注册事件触发函数时,就可以用dispatchEvent(new Cevent(Cevent.MYGOD,参数))里的这个参数再传点什么八卦的信息出来,而一旦进入“触发标记后要做的事情”中那个函数时,就可以用事件对象参数(假设为e:cevent)e来得到这个小道消息了。

阅读(2266) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~