`

Flex4 中的addEventListener () 和dispatchEvent () 方法

    博客分类:
  • flex
 
阅读更多
addEventListener () 方法

public function addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void


语言版本:  ActionScript 3.0
运行时版本:  Flash Player 9, AIR 1.0



使用 EventDispatcher 对象注册事件侦听器对象,以使侦听器能够接收事件通知。可以为特定类型的事件、阶段和优先级在显示列表中的所有节点上注册事件侦听器。

AIR 运行时中的 JavaScript 代码使用此方法注册 AIR API 定义的事件的事件侦听器。对于其他 JavaScript 事件(如 DOM body 对象的 onload 事件),您可以像对浏览器中运行的内容一样使用标准事件处理技术。

成功注册一个事件侦听器后,无法通过额外调用 addEventListener() 来更改其优先级。要更改侦听器的优先级,必须首先调用 removeListener()。然后,可以使用新的优先级再次注册该侦听器。

请记住,注册该侦听器后,如果继续调用具有不同 type 或 useCapture 值的 addEventListener(),则会创建单独的侦听器注册。例如,如果首先注册 useCapture 设置为 true 的侦听器,则该侦听器只在捕获阶段进行侦听。如果使用同一个侦听器对象再次调用 addEventListener(),并将 useCapture 设置为 false,那么便会拥有两个单独的侦听器:一个在捕获阶段进行侦听,另一个在目标和冒泡阶段进行侦听。

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

如果不再需要某个事件侦听器,可调用 removeEventListener() 删除它,否则会产生内存问题。事件侦听器不会自动从内存中删除,因为只要调度对象存在,垃圾回收器就不会删除侦听器(除非 useWeakReference 参数设置为 true)。

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

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

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


参数  type:String — 事件的类型。 
 
listener:Function — 处理事件的侦听器函数。此函数必须接受 Event 对象作为其唯一的参数,并且不能返回任何结果,如下面的示例所示: 。
function(evt:Event):void函数可以有任何名称。


 
useCapture:Boolean (default = false) — 此参数适用于 SWF 内容所使用的 ActionScript 3.0 显示列表体系结构中的显示对象。确定侦听器是运行于捕获阶段还是目标阶段和冒泡阶段。如果将 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,则该函数将作为垃圾回收并且不再是永久函数。如果创建对该内部函数的引用(将该函数保存到另一个变量中),则该函数将不作为垃圾回收并仍将保持永久。




引发 ArgumentError — 指定的 listener 不是一个函数。 

dispatchEvent () 方法

public function dispatchEvent(event:Event):Boolean


语言版本:  ActionScript 3.0
运行时版本:  Flash Player 9, AIR 1.0



将事件分派到事件流中。事件目标是对其调用 dispatchEvent() 方法的 EventDispatcher 对象。

参数  event:Event — 分派到事件流中的 Event 对象。如果正在重新分派事件,则会自动创建此事件的一个克隆。在分派了事件后,其 target 属性将无法更改,因此您必须创建此事件的一个新副本以能够重新分派。 



返回 Boolean — 如果成功分派了事件,则值为 true。值 false 表示失败或对事件调用了 preventDefault()。 

引发 Error — 已达到事件分派递归限制。 
分享到:
评论

相关推荐

    flex4自定义事件用法

    通常,我们会选择`flash.events.Event`或`mx.events.FlexEvent`作为基类,前者适用于基本事件,后者则为Flex框架提供了一些额外的属性和方法。 - 自定义事件类应包含一个构造函数,用于初始化事件的属性。例如,...

    flex4 订阅 发布 机制 实例 (lib )

    总的来说,这个Flex4订阅发布机制实例为开发者提供了一个实践和学习的平台,通过分析和调试"pushDemo2"项目,我们可以深入理解Flex4中事件处理的工作流程,并将其应用到自己的项目中,提升开发水平。

    flex和as3之间互相调用的方法

    总结,Flex和AS3之间的互相调用是通过MXML组件的属性和方法、AS3类的实例化以及事件监听和派发来实现的。理解这种交互方式对于构建高效、可扩展的Flex应用至关重要。同时,使用如`FlexComponentKit_v4.mxp`这样的...

    Flex4视频教程_02-03用AS自定义事件.rar

    本视频教程聚焦于Flex4中ActionScript(AS)的自定义事件使用,这在开发过程中非常重要,因为它允许开发者扩展和定制应用程序的通信机制。 自定义事件是Flex编程中的一个关键概念,它允许开发人员创建具有特定业务...

    Flex Module间通信

    例如,一个模块可以通过`.dispatchEvent()`方法发布事件,并在其他模块中使用`addEventListener()`方法监听该事件,从而触发相应的处理函数。 2. **公共接口和单例模式**:创建一个公共接口或单例类,模块可以通过...

    flex中文教程

    ActionScript中的addEventListener和removeEventListener方法用于添加和移除事件监听器,而dispatchEvent方法则用于触发事件。 六、Flex与服务器通信 Flex应用可以与各种后端服务器进行数据交换,如PHP、Java、ASP...

    Flex实现的计算器

    ActionScript中的addEventListener方法用于添加事件监听器,dispatchEvent方法用于触发事件。 4. **数据绑定** Flex支持数据绑定机制,允许UI元素的状态与模型数据之间自动保持同步。在计算器应用中,可能将运算...

    flex 自定义控件、事件

    2. **重写或扩展属性和方法**:根据需求,你可能需要重写父类的一些属性和方法,比如绘图方法(如`draw()`)或事件处理函数(如`mouseClick()`),以便定制控件的行为和外观。 3. **样式和皮肤**:Flex支持皮肤和...

    Flex各自定义组件事件通讯例子

    在Flex开发中,自定义组件和事件通讯是构建复杂应用程序的关键技术。本示例通过一个简单的用户登录场景,深入解析了如何实现组件间的有效通信。下面将详细解释Flex自定义组件、事件处理以及它们在实际应用中的作用。...

    FLEX中下拉框嵌入Checkbox

    在Flex编程中,下拉框(ComboBox)是用户界面中常用的一种组件,它允许用户从预定义的选项中选择一个值。然而,有时我们需要在下拉框中不仅...这种方法在处理复杂数据和交互时非常有用,也是Flex开发中常见的实践之一。

    用Flex+Java进行软件开发速成篇

    事件在Flex中扮演着非常重要的角色,它们是应用程序响应用户交互和内部状态变化的关键。 #### 三、Flex事件机制详解 ##### 1. 事件注册通道 在Flex中,事件注册通道是指MXML组件中可用于注册事件监听器的方法或属性...

    Flex自定义组件和事件

    - **添加属性和方法**:根据需求添加新的属性和方法,以实现特定的功能。 - **布局管理**:如果组件需要包含子组件,可以实现自己的布局逻辑。 #### 3. 注册组件 为了让Flex能够识别并使用自定义组件,我们需要在...

    Flex4视频教程_02-02用mxml自定义事件.rar

    在Flex4中,MXML是一种声明式编程语言,主要用于构建用户界面,与ActionScript的面向对象编程相辅相成。 在Flex中,事件是系统和组件之间通信的关键机制。事件可以由用户操作引发,如点击按钮,或者由程序逻辑内部...

    Flex代码

    4. Flex构建工具:Flex Builder(现为Flash Builder)是Adobe官方的IDE,提供了一流的Flex开发环境,包括代码提示、调试、预览和部署等功能。此外,还有像IntelliJ IDEA和Eclipse这样的第三方IDE支持Flex开发。 5. ...

    Flex从入门到实践——源代码(10章)

    学习如何在界面上添加、布局和定制这些组件,源代码将涵盖这些内容,让你理解组件的属性和方法。 4. **数据绑定**:Flex支持双向数据绑定,使得视图和模型之间的同步变得简单。源代码中会展示如何使用mx.binding....

    几个很不错的Flex特效

    使用addEventListener方法和dispatchEvent方法可以处理用户输入和组件间的通信。 在学习和应用这些Flex特效时,还需要熟悉Flex SDK、Flash Builder或其他IDE,以及相关的文档和社区资源。不断地实践和探索将帮助你...

    Flex事件机制详细说明

    在Flex中,可以通过调用`dispatchEvent()`方法手动触发事件。该方法的语法如下: ```actionscript objectInstance.dispatchEvent(new Event("event_type")): Boolean ``` 其中`event_type`是事件类型,可以是Flex...

    flex自定义组件事件DEMO

    4. 示例学习:在"flex自定义组件事件DEMO"中,你可以看到如何在自定义组件中创建并派发自定义事件,以及如何在其他地方监听和响应这些事件。通过分析代码,可以了解事件生命周期、事件冒泡和捕获的概念,以及如何在...

    flexevent.rar_flex

    1. 定义事件类:通过继承Event类或其子类,如FlexEvent,定义自定义事件类,添加自己的属性和方法。 2. 分发自定义事件:在事件源中创建自定义事件实例,并使用dispatchEvent方法分发。 3. 注册监听器:与处理内置...

Global site tag (gtag.js) - Google Analytics