<meta name="CREATED" content="20071113;10163300">
<meta name="CHANGEDBY" content="Seaman Wang">
<meta name="CHANGED" content="20071113;15392300">
<style type="text/css">
<!--
@page { size: 21cm 29.7cm; margin: 2cm }
P { margin-bottom: 0.21cm }
-->
</style>
事件监听器同样要继承EventDispatcher类,这样就可以使用addEventListener方法:
publicfunctionaddEventListener(type:String,listener:Function,useCapture:Boolean=false,priority:int=0,useWeakReference:Boolean=false):void
使用EventDispatcher对象注册事件侦听器对象,以使侦听器能够接收事件通知。可以为特定类型的事件、阶段和优先级在显示列表的所有节点上注册事件侦听器。
成功注册一个事件侦听器后,无法通过额外调用addEventListener()来更改其优先级。要更改侦听器的优先级,必须首先调用removeListener()。然后,可以使用新的优先级再次注册该侦听器。
请记住,注册该侦听器后,如果继续调用具有不同type或useCapture值的addEventListener(),则会创建单独的侦听器注册。例如,如果首先注册useCapture设置为true的侦听器,则该侦听器只在捕获阶段进行侦听。如果使用同一个侦听器对象再次调用addEventListener(),并将useCapture设置为false,那么便会拥有两个单独的侦听器:一个在捕获阶段进行侦听,另一个在目标和冒泡阶段进行侦听。

不能只为目标阶段或冒泡阶段注册事件侦听器。这些阶段在注册期间是成对出现的,因为冒泡阶段只适用于目标节点的始祖。

如果不再需要某个事件侦听器,可调用removeEventListener()删除它,否则会产生内存问题。由于垃圾回收器不会删除仍包含引用的对象,因此不会从内存中自动删除使用已注册事件侦听器的对象。

复制EventDispatcher实例时并不复制其中附加的事件侦听器。(如果新近创建的节点需要一个事件侦听器,必须在创建该节点后附加该侦听器)。但是,如果移动EventDispatcher实例,则其中附加的事件侦听器也会随之移动。

如果在正在处理事件的节点上注册事件侦听器,则不会在当前阶段触发事件侦听器,但会在事件流的稍后阶段触发,如冒泡阶段。

如果从正在处理事件的节点中删除事件侦听器,则该事件侦听器仍由当前操作触发。删除事件侦听器后,决不会再次调用该事件侦听器(除非再次注册以备将来处理)。

参数
type:String—事件的类型。

listener:Function—处理事件的侦听器函数。此函数必须接受Event对象作为其唯一的参数,并且不能返回任何结果,如以下示例所示:

function(evt:Event):void

函数可以有任何名称。

useCapture:Boolean(default=false)—确定侦听器是运行于捕获阶段、目标阶段还是冒泡阶段。如果将useCapture设置为true,则侦听器只在捕获阶段处理事件,而不在目标或冒泡阶段处理事件。如果useCapture为false,则侦听器只在目标或冒泡阶段处理事件。要在所有三个阶段都侦听事件,请调用两次addEventListener,一次将useCapture设置为true,第二次再将useCapture设置为false。

priority:int(default=0)—事件侦听器的优先级。优先级由一个带符号的32位整数指定。数字越大,优先级越高。优先级为n的所有侦听器会在优先级为n-1的侦听器之前得到处理。如果两个或更多个侦听器共享相同的优先级,则按照它们的添加顺序进行处理。默认优先级为0。

useWeakReference:Boolean(default=false)—确定对侦听器的引用是强引用,还是弱引用。强引用(默认值)可防止您的侦听器被当作垃圾回收。弱引用则没有此作用。

类级别成员函数不属于垃圾回收的对象,因此可以对类级别成员函数将useWeakReference设置为true而不会使它们受垃圾回收的影响。如果对作为嵌套内部函数的侦听器将useWeakReference设置为true,则该函数将被作为垃圾回收并且不再是永久函数。如果创建对该内部函数的引用(将该函数保存到另一个变量中),则该函数将不作为垃圾回收并仍将保持永久。
使用EventDispatcher对象注册事件侦听器对象,以使侦听器能够接收事件通知。可以为特定类型的事件、阶段和优先级在显示列表的所有节点上注册事件侦听器。
成功注册一个事件侦听器后,无法通过额外调用addEventListener()来更改其优先级。要更改侦听器的优先级,必须首先调用removeListener()。然后,可以使用新的优先级再次注册该侦听器。
请记住,注册该侦听器后,如果继续调用具有不同type或useCapture值的addEventListener(),则会创建单独的侦听器注册。例如,如果首先注册useCapture设置为true的侦听器,则该侦听器只在捕获阶段进行侦听。如果使用同一个侦听器对象再次调用addEventListener(),并将useCapture设置为false,那么便会拥有两个单独的侦听器:一个在捕获阶段进行侦听,另一个在目标和冒泡阶段进行侦听。
不能只为目标阶段或冒泡阶段注册事件侦听器。这些阶段在注册期间是成对出现的,因为冒泡阶段只适用于目标节点的始祖。
如果不再需要某个事件侦听器,可调用removeEventListener()删除它,否则会产生内存问题。由于垃圾回收器不会删除仍包含引用的对象,因此不会从内存中自动删除使用已注册事件侦听器的对象。
复制EventDispatcher实例时并不复制其中附加的事件侦听器。(如果新近创建的节点需要一个事件侦听器,必须在创建该节点后附加该侦听器)。但是,如果移动EventDispatcher实例,则其中附加的事件侦听器也会随之移动。
如果在正在处理事件的节点上注册事件侦听器,则不会在当前阶段触发事件侦听器,但会在事件流的稍后阶段触发,如冒泡阶段。
如果从正在处理事件的节点中删除事件侦听器,则该事件侦听器仍由当前操作触发。删除事件侦听器后,决不会再次调用该事件侦听器(除非再次注册以备将来处理)。
参数
type:String—事件的类型。
listener:Function—处理事件的侦听器函数。此函数必须接受Event对象作为其唯一的参数,并且不能返回任何结果,如以下示例所示:
function(evt:Event):void
函数可以有任何名称。
useCapture:Boolean(default=false)—确定侦听器是运行于捕获阶段、目标阶段还是冒泡阶段。如果将useCapture设置为true,则侦听器只在捕获阶段处理事件,而不在目标或冒泡阶段处理事件。如果useCapture为false,则侦听器只在目标或冒泡阶段处理事件。要在所有三个阶段都侦听事件,请调用两次addEventListener,一次将useCapture设置为true,第二次再将useCapture设置为false。
priority:int(default=0)—事件侦听器的优先级。优先级由一个带符号的32位整数指定。数字越大,优先级越高。优先级为n的所有侦听器会在优先级为n-1的侦听器之前得到处理。如果两个或更多个侦听器共享相同的优先级,则按照它们的添加顺序进行处理。默认优先级为0。
useWeakReference:Boolean(default=false)—确定对侦听器的引用是强引用,还是弱引用。强引用(默认值)可防止您的侦听器被当作垃圾回收。弱引用则没有此作用。
类级别成员函数不属于垃圾回收的对象,因此可以对类级别成员函数将useWeakReference设置为true而不会使它们受垃圾回收的影响。如果对作为嵌套内部函数的侦听器将useWeakReference设置为true,则该函数将被作为垃圾回收并且不再是永久函数。如果创建对该内部函数的引用(将该函数保存到另一个变量中),则该函数将不作为垃圾回收并仍将保持永久。
本文详细介绍了事件监听器的使用方法,包括如何注册和取消监听器、优先级设定及捕获和冒泡阶段的区别等关键概念。
130

被折叠的 条评论
为什么被折叠?



