快速业务通道

flash事件模型核心:监听器和广播器

作者 佚名技术 来源 服务器技术 浏览 发布时间 2012-07-10


这对一些想深入了解Flash MX运行机制,想进步的AS爱好者来说是非常重要的。
我在各个flash网站上搜寻了一下,有两篇比较好的文章,我先翻译其中的一篇给大家作为参考。I sorry that I am shit in English.
Listeners(监听器)和ASBroadcaster(AS广播器)
Author: Santiago Esperanza
translater: AOL
版本:Flash MX
级别:中级
来源:www.flashguru.co.uk
介绍
用监听的方法是在flash MX中才出现的概念。监听器顾名思义, 就是一个用来监听特定事件的发生情况的对象。如果你对actionscript非常熟悉的话,你肯定多次用到过监听器,但是你可能不知道它们。从技术上说,从flash 5以来所有的影片剪辑,都是监听器;所有的按钮也都是如此。这些flash对象都是用来监听一个事件, 当这个事件发生了,它就执行一段语句。但是在flash MX以前, 它们是怎么样的呢?这个东西也不是什么新事物了, 只是直到flash 版本为MX的时候actionscript语言才让我们完全地运用监听器而已。
进一步的认识
学习监听器, 从按钮开始是一个不错的方法。按钮给我们的整个概念就是非常具有代表性的交互功能。当你按下一个按钮的时候,一个你所期待的结果就会发生。确定这些事情是不是发生了, 这是按钮为达到与用户交互的工作。当按下一个按钮的事件被检测到或者这个事件是由flash播放器发送出去的,在按钮上的on(press)事件和里面的代码就会执行。还有一些按钮监听的事件, 比如说释放(release),滑上(rollOver),等等。而flash的影片剪辑也有类似的为一些事件如enterFrame,mouseMove,keyDown等探测的监听器。
在flash MX以前, 这些监听器(按钮和影片剪辑)都是预先定义好了的,而且它们是不能改变的,我们用户是没有人能够定义别的类型的监听器的。所有的这些都在flash运用新的事件模型后彻底改变了。按钮和影片剪辑仍然是预先定义好了的,但是现在你可以定义你自己的为某些你特指的事件的监听器,就像被公认了的按钮和影片剪辑一样的事件监听器。当然你所定义的监听器不仅仅可以对像keyDown或者mouseMove这样的事件进行监听。你可以用ASBroadcaster(Action script广播器)来定义你要监听的事件。
flash内建的监听事件类型和广播器是怎么样的呢,请看下表。
按此在新窗口浏览图片
你会注意到不是所有的事件, 比如说 onDragOut,都和一件广播器有关联。你可以想象它们是被flash播放器广播的, 而不是通过一个具体的flash actionscript对象。这些事件被限定只能用于列表中对应的监听器。用onDragout来说,它只能用于按钮或者影片剪辑对象。当一件事情被初始化的时候,你就可以广播器添加上面的列表中所允许的监听器。例如, 你可以用actionscript建立一个普通的对象,然后使他监听一个鼠标对象(广播器)。这个鼠标对象可以在当鼠标被按下,移动或者释放的时候让物体执行onMouseDown,onMouseMove和onMouseUp代码。
认识监听器和广播器有两种不同的方法。其中一种方法,表面上在我们的认识当中,独立的监听器是可以意识到的,它们监听事件是否在flash中发生。为了真正了解它们是怎么工作的,我们运用第二种方法,使我们知道监听器和广播器在flash内部是怎么工作的。
监听器监听
我第一次运用到监听器是在MX的影片剪辑运用一个onKeyUp事件。如果在一个影片剪辑自身加了一个onClipEvent(keyUp),这个keyUp事件是被认可的,我加入里面的代码也就会执行了。试着用这种方法来定义事件:instance_mc.onKeyUp = function(){...},没有产生什么结果。直到后面我才意识到我没有把这个影片剪辑定义成Key对象(事件广播器)的一个监听者(器)。只有定义了之后, 它才可以探

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号