Flash ActionScript图文教程:处理事件篇
2.6事件监听
事件有一个习气,就是“拉帮结派”,正常情况下,某些对象是接收不到某些事件的,比方说一个动态文本就不能接受鼠标事件。如果我们编写这样的代码为一个动态文本指定事件处理代码:
myTextField_txt.onMouseDown = function(){
}
当我们在它上面单击鼠标时,代码并不会执行,因为它压根就不会接收到鼠标事件。要想让它正确接受鼠标事件,必须再加上这样的代码:
Mouse.addListener(myTextField);
这个语句就是让myTextField向Mouse对象“报道”,这个语句执行之后,myTextField就具有了“监听”鼠标事件的功能了。特别需要注意一点的,一旦某个对象被注册为Mouse的监听器,它将会接受到鼠标发出的所有事件,不论发生事件时鼠标是否在对象上方,根据这个原理,我们来制作一个小的鼠标监视器。
首先向场景中添加两个文本,上面一个静态文本,下面一个动态文本,将动态文本命名为mousePosition_txt。
在影片的最后一帧上单击,打开脚本面板,输入这样的代码:
代码很简单,第一句停下影片准备接收事件,接下来将mousePostion_Txt注册为接收鼠标事件,然后使用事件处理函数的方法捕捉onMouseMove事件并将事件发生时的鼠标位置显示到mousePostion_txt中,以上这个小程序的执行效果如下图。
除了监听鼠标事件之外,我们还可以监听按键事件和场景事件:
Key.addListener (historyArray);
Stage.addListener (historyArray);
监听器使用过之后可以使用removeListener将其删除,例如:
Key.removeListener (historyArray);
Mouse.removeListener (historyArray);
Stage.removeListener (historyArray);
2.7小结
事件处理是交互特性和自动运行的基础,ActionScript所能处理的事件非常非常繁多,我们完全没必要一个一个地去学习,因为这些事件的名称和用途大多都是相当直观的。比如处理鼠标移动就是onMouseMove,处理鼠标按键就是onMouseDown,等等,需要用的时候查一下手册就可以轻松搞定。只不过onClipEvent事件要注意领会掌握,它的使用比较灵活。本章的结尾还介绍了使用事件处理函数为对象指定事件处理代码的方法,应当尽可能地用这种方法处理事件,它可以让你的程序结构更加清晰易读。