“只有事件发送者才能侦听事件”,这句话的意思是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 函数,当执行到
urlLoader.addEventListener(Event.COMPLETE, onXMLDataLoaded)的时候,程序只是将urlLoader对象添加到侦听队列中,并没跳转去执行
onXMLDataLoaded(event:Event):void ,所以这个时候dispatchEvent(new Event(Settings.INIT, true, true))该条语句并未执行,也就是说Settings事件源并未派发事件。
执行完loadSettings(
url:String):void 函数后,再执行
Settings.getInstance().addEventListener(Settings.INIT, onSettingsInit)语句,将Settings.getInstance()添加到Settings事件源的队列上,当customAs/xml/file.xm加载完后,Event事件源通知urlLoader对象执行onXMLDataLoaded函数,这之后才会派发 Settings.INIT事件,之后执行onSettingsInit函数。
摘自:http://blog.csdn.net/lingwen20/article/details/4470510
分享到:
相关推荐
Flex事件处理依赖于ActionScript 3.0的事件机制,但在Flex层面提供了更直观的接口来处理这些事件。 事件流是ActionScript 3.0引入的一个重要概念,它与显示列表紧密相关。事件流描述了事件对象如何在显示列表中的...
事件流是Flex事件处理的关键组成部分,它描述了事件对象如何在显示列表中传播。事件流分为三个阶段: 1. **捕获阶段**:事件从最顶层容器开始向下传播,直到达到目标对象。这一阶段主要用于提前捕获事件,以便在...
事件侦听器可以捕获模型运行过程中的关键事件,比如达到特定状态或输出阈值,然后触发相应的处理代码,这在自动控制和决策制定等场景中非常有用。 总的来说,这个教程旨在教授如何在MATLAB环境中创建一个简单的GUI...
在示例代码中,`instance.addEventListener(MouseEvent.CLICK, insClickHandler)`将`insClickHandler`函数注册为`instance`对象上的点击事件处理函数。每当发生点击事件时,`insClickHandler`就会被调用。这样做是...
首先,我们要理解原生JavaScript中的事件处理方式。通常,我们可以使用`addEventListener`方法来为元素添加事件侦听器: ```javascript document.getElementById('myButton').addEventListener('click', function()...
在Dojo中,事件处理机制是核心功能之一,它使得开发者能有效地响应用户的交互。本篇将深入探讨Dojo的基础事件侦听器以及发布/预定通信机制。 首先,我们来看一下Dojo如何标准化事件和键盘处理。Dojo遵循W3C的事件...
事件侦听器的引入解决了传统事件处理方式的一些局限性,比如单个事件只能绑定一个处理函数的问题。 传统的事件处理方式通常使用`on`前缀来添加事件,例如`element.onclick = function() {...}`。但这种方式如果重复...
举例说明了事件的三个阶段,事件的派发,事件的侦听,事件的拦截,自定义事件等相关知识点. 以上知识点在Demo中都有体现,初学者请仔细分析代码,加强理解,多调试、修改、验证以加深自己对事件机制的认识.
本项目聚焦于“自定义事件侦听器”,即开发人员根据特定需求定制的事件处理机制。 在Java中,事件处理主要基于Observer模式,它定义了对象间的一种一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象...
众所周知,世界上97%的台式机上都安装有Flash Player,利用包含Flash创作工具、渲染引擎和已建立的超过200万的设计者和开发者群体的Flash平台生态系统,我们可以制作出各式各样的Flash动画。Adobe推出了flash最新...
在Vue 3中,事件处理是框架中一个关键的组件通信机制。Vue 3引入了与Vue 2相比更为先进的事件系统,使得组件间的交互更加灵活和高效。在这个主题下,我们将深入探讨“Vu3 事件侦听和抛送模式”,特别是关于跨模板...
事件委托模型是指将事件处理权委托给事件侦听器,而事件监听模型是指事件源将事件传递给事件侦听器。 Java 中的事件处理机制还提供了多种事件侦听接口,如 ActionListener、MouseListener、KeyListener 等,每种...
在编程和软件开发中,时间类型的侦听函数是一种重要的技术,它主要用于监控和处理与时间相关的事件或行为。这类函数通常被用在实时系统、游戏引擎、数据流处理或者任何需要定时触发某些操作的场景。在本文中,我们将...
通过理解事件源、事件监听器和事件处理方法之间的关系,开发者可以设计出更加灵活和用户友好的应用程序。无论是简单的“Clickme”程序,还是复杂的“计算器”项目,事件处理都是其核心组成部分,值得深入学习和实践...
JavaScript事件处理程序,...总的来说,JavaScript事件处理程序通过事件侦听器提供了更加灵活和强大的功能,使得我们能够构建更复杂的交互式Web应用。正确理解和使用这些方法对于任何JavaScript开发者来说都至关重要。
symfony-json-request-transformer, 用于解码JSON编码请求内容的Symfony 2事件侦听器 symfony-json-request-transformer用于解码JSON编码请求内容的Symfony事件侦听器。 请阅读关于这里知识库的博客文章,位于 /...
在AS2(ActionScript 2.0)中,事件处理是动态交互系统的重要组成部分,而事件侦听器是实现这一机制的关键。事件侦听器允许我们响应特定的事件,如用户点击、对象加载等,而无需不断检查这些事件是否已经发生,这与...
这个示例可能涵盖了连接数据库、创建`SqlCommand`和`SqlDependency`对象、设置事件处理程序以及处理数据变更事件的完整流程。 需要注意的是,`SqlDependency`需要SQL Server Agent服务运行,并且需要在服务器端启用...
salt-eventsd, 用于将数据写入数据库的saltstack的事件侦听器守护进程 这个项目不再被维护。 目前的盐版本可以用引擎做同样的事情。 这个项目不再被维护。 目前的盐版本可以用引擎做同样的事情。 这个项目不再被维护...
Spring 侦听事件 总结(xmind文件)Spring 侦听事件 总结(xmind文件)Spring 侦听事件 总结(xmind文件)Spring 侦听事件 总结(xmind文件)