关于AS3中事件机制的探讨--AS3技术心得(1)

来源:互联网 发布:java 多进程 编辑:程序博客网 时间:2024/04/29 18:27

开题:学习AS3有一段时间了,感觉应该写点东西。为记录也好,也分享也好,为交流也好,写个BLOG都是个不错的选择。所以就开始了。

        在AS3中,一切的互动都是由事件处理机制来完成的。所以把它当作第一篇的内容。因为你要是不了解AS3的事件处理机制。那就几乎不可能编写出可以练习其它函数的代码。

       在AS的以往版本中,就有addlistener函数。笔者当时并没有太注意其潜力。在日常的编程中都是用其它方法取代了。如果说你和我有一样的经历的话,相信这一章会比较有用。

       AS3的事件机制,说起来就是每个定义了的事件发生的时候,都会向侦听事件发生的eventlistener发送一个消息。这个消息中比较常用的有两个内容:1、事件的类型(是鼠标按下(MOUSE_DOWN)还是键盘按下(KEY_DOWN)等等),2、消息中还有事件源头(event.target)。为什么要有这两个呢?因为一个eventlistener可以侦听多个事件类型。所以在消息来到的时候它必须知道是哪一个发生了。第二个内容是因为一个eventlistener可以听多个对像的事件。所以在消息来到的时候它发源知道是哪一个对像发生了这样的事件。

       说了这些原理。我们看例子:

//sample1.fla

stage.addEventListener(MouseEvent.MOUSE_DOWN,handleMouseDown);
function handleMouseDown(event : MouseEvent):void{
 trace( "mousedown" );
 } 

1.stage是对舞台对象的引用。就是MouseEvent.MOUSE_DOWN事件发生的主体(谁被鼠标按下了?)。

可以看出,eventlistener一般都是一个函数。也就是说一个操作。什么意思?就是说这个动作(MOUSE_DOWN)在这个实体上(stage)发生之后。会产生什么样的效果?那就是trace一个语句。当然,你肯定已经想好了。把我的trace语句改成你要的操作那不就成互动了吗?OK!你成功了。

事件机制让我们很好的将事件产生体和动作分离开来,让我们很好的安排我们的响应。有兴趣的话,可以看看flash.event这个包。里面有很多的类。包括了所有的交互动作。

好了,第一课就这样。你可以试试编一个小程序响应鼠标和键盘。(现在的鼠标事件已经有了双击。兴奋吧。快试试。)

原创粉丝点击