作者:KingdaSun 时间: 2006-07-29 文档类型:原创 来自:蓝色理想 第 2 页 强大的事件机制 [2] 第 3 页 强大的事件机制 [3] 第 4 页 强大的事件机制 [4] |
其实到目前为止,我的3.0开发学习笔记已经有3万字左右的东西了,但都是些纲要和代码,整理成文,尤其是用比较有条理和易懂的方式写出来会比较慢。况且开发中的代码是随手拈来,但写教程的代码往往要经过一些改写,使得重点更突出。所以如果更新有点慢,请耐心一些,呵呵。 如何接收事件?如何做到AS3.0的标准事件编程? Event改变的部分很多,这两天有空时,黑羽就在想怎样用一个有条理的方式来讲解Event和它相关的诸多内容,让我们感到比较容易理解,记忆和接受。 先给个接受事件的代码例子。在例子中,指出:
黑羽一贯的风格,先来一个例子。我很想给个短一点的代码例子,但是要达到清楚,全面和标准的示范,我还是决定采用这个Document Class的示例。我会在每个代码段注一些注释,大家不明白的地方回贴说一下,我会尽量解答。 Document Class的含义和相关用法并不难,忘了的兄弟看我第3篇教程: 好,继续.... 新建一个as文件,拷贝以下代码,命名为AddListener.as。 新建一个fla,命名为 "黑羽黑羽我爱你.fla"(本教程推荐使用,倘若不遵从可能导致喝凉水塞牙泡MM被踢炒股被套等严重后果,霍哈哈。Just kidding。)。设置它的文档类(Document Class)为AddListener.
package { //用package外面定义的类KingdaSprite创建一个实例,由于同文件中,所以不用import啦 private function inclassHandler(event:MouseEvent):void { function outsideHandler(event:MouseEvent):void { import flash.display.Sprite; //这个类就是画一个矩形,然后你点击这个矩形会发出标准鼠标click的事件
鼠标一点击创建出来的绿色矩形,会看到输出
类里面的侦听器侦听到MouseEvent事件: [MouseEvent type="click" bubbles=true cancelable=false eventPhase=2 localX=64 localY=80 stageX=64 stageY=80 relatedObject=null ctrlKey=false altKey=false shiftKey=false delta=0] 类外面的侦听器侦听到MouseEvent事件: [MouseEvent type="click" bubbles=true cancelable=false eventPhase=2 localX=64 localY=80 stageX=64 stageY=80 relatedObject=null ctrlKey=false altKey=false shiftKey=false delta=0]
演示完毕,我们来讲第一个话题 (一)Event对象发生了什么变化 AS2.0中创建event 对象是很随意的,只要这个对象有一个String属性叫做type的就可以了,甚至连target都可以省掉。不要以为这不规范不应该做,看看Flash类源码,Macromedia的程序员可不只一次的这样使用过。所谓上梁不正下梁歪,就是这样。(其实严格说也没什么不对,有时候是不需要target。但没有标准就是不好) 3.0不同了,所有的事件必须都要继承自Event这个类(全饰名称flash.events.Event)。不然,哼哼,事件发送是不能成功地。 说说Event这个类,AS3.0的基石类是Object,Event是直接继承自Object的,开国大佬级别的。它里面定义了一些基本的事件名称,比如ACTIVATE(FlashPlayer得到系统焦点时事件),ADDED(对象被添加到显示时发送的事件)。AS3.0中有个好功能是cancel事件,但Event中这些基本事件统统是不能被cancel的,听起来似乎很NB。这不细说了,Event太多内容了。以后写高级内容时在提到如何运用吧。要想Flash玩的转,Event类必须很精通。正所谓江湖人称:"平生不识Event,就称闪客也枉然。" 这样有什么好处?
规范事件的定义放到下一部分讲。至于内置的Event子类好处,大家请看上面fla的运行输出,MouseEvent就是内建的一个Event子类,它的好处一看它的内容就明白,从AS3.0起,任何一次点击事件我们都可以得到:
|
联系客服