“只有事件发送者才能侦听事件”,这句话的意思是dispatchEvent对象与addEventListener对象都必须是同一个实例,所发送的事件类型可以是系统自定义的事件也可以是任一类的静态常量。
在自定义事件派发与侦听过程中需要注意事件的流程,我们先要做的是建立侦听器(addEventListener),再发送事件,程序在执行dispatchEvent之后立马通知已注册事件侦听的所有对象,如果addEventListener语句在dispatchEvent之后,那么注册该侦听器的对象将无法接到通知。这一点在接收和发送数据时容易出问题,有时候很难弄明白dispatchEvent语句究竟是在什么时候执行的。
Settings.getInstance().loadSettings("customAs/xml/file.xml");
Settings.getInstance().addEventListener(Settings.INIT, onSettingsInit);
public function loadSettings(url:String):void {
var urlRequest:URLRequest = new URLRequest(url);
urlLoader = new URLLoader();
urlLoader.addEventListener(Event.COMPLETE, onXMLDataLoaded);
urlLoader.load(urlRequest);
trace("loadSettings");
}
private function onXMLDataLoaded(event:Event):void {
data = XML(urlLoader.data);
dispatchEvent(new Event(Settings.INIT, true, true));
dispatchEvent(new Event(Settings.FILE,true,true));
}
那么它执行的顺序就应该是先执行loadSettings("customAs/xml/file.xml"),进入loadSettings([url=String):void]url:String):void[/url] 函数,当执行到
urlLoader.addEventListener(Event.COMPLETE, onXMLDataLoaded)的时候,程序只是将urlLoader对象添加到侦听队列中,并没跳转去执行
onXMLDataLoaded(event:Event):void ,所以这个时候dispatchEvent(new Event(Settings.INIT, true, true))该条语句并未执行,也就是说Settings事件源并未派发事件。
执行完loadSettings([url=String):void]url:String):void[/url] 函数后,再执行
Settings.getInstance().addEventListener(Settings.INIT, onSettingsInit)语句,将Settings.getInstance()添加到Settings事件源的队列上,当customAs/xml/file.xm加载完后,Event事件源通知urlLoader对象执行onXMLDataLoaded函数,这之后才会派发 Settings.INIT事件,之后执行onSettingsInit函数
http://blog.csdn.net/lingwen20/archive/2009/08/21/4470510.aspx
分享到:
相关推荐
### Flex事件机制详解 #### 一、事件简介 在Flex框架中,事件是应用程序与用户交互的核心机制之一。它可以由多种触发源启动,包括但不限于用户的输入(如键盘按键、鼠标点击)、外部数据加载完成(例如WebService...
事件监听器可以通过 `addEventListener` 方法添加到组件上,它接受三个参数:事件类型、处理函数和一个布尔值,决定是否阻止事件的默认行为。监听器可以添加在组件的整个生命周期内,也可以在需要时动态添加或移除...
Flex事件机制是Adobe Flex应用程序中处理用户交互和组件通信的核心组成部分。它主要涉及事件流、事件处理程序以及事件对象的概念,这些在构建富互联网应用程序(RIA)时扮演着至关重要的角色。下面将对这些概念进行...
Flex事件代码生成器是一款专为Flex开发者设计的实用工具,旨在简化代码编写过程,提高开发效率。Flex是一种基于ActionScript 3.0的开源框架,主要用于构建富互联网应用程序(RIA)。在Flex应用开发中,处理各种用户...
首先,我们要理解Flex事件模型的基础。在Flex中,事件是由Event类或其子类表示的,它们是传递信息的对象。当一个事件发生时,它会从源对象(通常是组件)出发,沿着事件流传播。这个流分为两个阶段:冒泡阶段和捕获...
6. **事件监听与处理**:通过`addEventListener`方法,可以在任何时间添加事件监听器,处理特定类型的事件。同时,`removeEventListener`用于移除不再需要的监听器。事件处理函数接收的`event`对象提供了关于事件的...
本资料“关于flex事件的讲解.pdf”将深入探讨Flex事件系统,帮助学习者更好地理解和应用这一关键概念。 1. **事件模型**:Flex采用发布/订阅模型处理事件,事件源(如UI组件)发布事件,而感兴趣的接收者(监听器)...
阅读这份文档将有助于深入理解Flex事件机制,并在实际开发中更高效地利用它们。 总之,理解Flex的事件模型对于创建响应式和高效的RIA至关重要。熟练掌握事件处理可以让你的Flex应用程序更加互动,提升用户体验。...
总的来说,Flex事件机制是通过事件流的分发实现组件间的交互,自定义事件则提供了更灵活的数据传递和处理方式。理解并熟练运用这一机制,能帮助开发者更好地设计和实现复杂的Flex应用程序。对于Flex开发者来说,掌握...
在本文中,我们将深入探讨Flex事件的各个方面,包括事件流、事件类型、自定义事件的创建与处理。 首先,Flex的事件流分为三个阶段:冒泡阶段、捕获阶段和目标阶段。冒泡阶段是从最具体的子组件开始,沿着组件层次...
理解并掌握Flex事件,是实现复杂界面逻辑的前提。 1. **事件类型**:Flex定义了一系列事件类型,包括但不限于`MouseEvent`、`KeyboardEvent`、`FocusEvent`、`TouchEvent`等,覆盖了各种常见的用户交互行为。 2. ...
理解Flex事件的工作流程对于创建响应式和交互式的用户界面至关重要。 首先,让我们深入探讨Flex事件的生命周期。当一个事件被触发时,例如用户点击按钮,该按钮会创建一个事件对象并将其 dispatch(分发)到事件流...
理解并熟练运用Flex控件事件,可以极大地提升应用程序的用户体验和功能完整性。 1. 事件模型: Flex采用基于事件的模型来处理用户交互。事件是从事件源(通常是UI控件)发出的信号,然后由事件监听器处理。事件...
事件侦听是ActionScript(特别是Flash和Flex)中一个重要的交互处理机制。它允许我们对用户的行为或者对象的状态变化做出响应,例如,当用户点击一个按钮时触发特定的操作。 首先,`addEventListener`方法用于添加...
在Flex应用中,事件处理是核心功能之一,它使得组件之间能够有效地通信。自定义事件是Flex开发中的一个重要概念,允许开发者扩展内置事件系统,以满足特定项目的需要。下面将详细介绍Flex4自定义事件的用法,以及...
Flex是Adobe公司开发的一种用于构建富互联网应用程序(RIA)的框架,主要基于...通过理解和实践这个“flex 关于事件的例子”,初学者能够掌握Flex中事件处理的基本原理和用法,为构建交互式Flex应用打下坚实基础。
这有助于理解事件处理的流程和机制。 6. 学习要点:重点研究DEMO中的事件创建、派发和监听代码,了解如何在组件内部与外部进行有效通信。此外,还可以探索如何优化事件处理,比如使用事件代理来减少内存占用,或者...
本资料包“全套 Flex 实例 源码 关于事件的处理(3)”主要关注事件冒泡机制及其管理,帮助开发者理解如何阻止事件冒泡,以及如何添加和跟踪冒泡过程。以下是关于这个主题的详细讲解。 事件冒泡是指在事件传播过程...
Flex事件模型基于ActionScript 3.0的事件模型,提供了一种标准的方式来处理UI组件和其他对象之间的通信。在这个主题中,我们将深入探讨Flex事件的基础、事件生命周期、事件处理程序以及如何在实践中使用它们。 首先...