“只有事件发送者才能侦听事件”,这句话的意思是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函数。。。。。。也不晓得是不是这样。。。。暂时这样理解吧
事件机制啊~又搞了我一天的时间~不晓得是我太笨了~还是它太难了~
分享到:
相关推荐
本篇文章将深入探讨如何定义和优化自定义模块,以及处理自定义事件。 首先,理解FreeSwitch模块的生命周期是至关重要的。一个模块通常包括加载、初始化、运行和卸载四个阶段。在加载阶段,模块被FreeSwitch核心加载...
自定义事件则是对系统内置事件的扩展,让我们能够根据具体需求创建和处理自己的事件。本篇文章将深入探讨如何在C#中自定义事件以及如何触发这些事件,同时展示如何在窗体之间传递数据,特别是从子窗体到父窗体。 ...
海典H1自定义事件框架浅说 1、窗口概述 2 2、窗口相关事件 3 1、打开窗口 3 key事件 4 timer事件 4 2、保存数据 4 1、 pfc_begintran 4 3、 pfc_endtran 4 4、 Pfc_save 4 3、关闭窗口 4 3、数据窗口事件 5 添加主...
自定义事件是Flex开发中的一个重要概念,允许开发者扩展内置事件系统,以满足特定项目的需要。下面将详细介绍Flex4自定义事件的用法,以及如何在一个完整的项目中导入和运行。 1. **创建自定义事件类** - 首先,...
在VC(Visual C++)中实现自定义事件的编程是一个重要的技能,特别是在开发Windows应用程序时。自定义事件允许程序员扩展标准事件处理机制,创建特定于应用的交互逻辑。本实例将探讨如何在C++中利用MFC(Microsoft ...
### 自定义事件与参数(C#) 在C#编程中,事件是一种特殊的委托类型,用于封装方法调用,这些方法通常响应对象状态的变化或其他动作的发生。事件是.NET框架中的一个核心概念,它允许对象之间进行通信,而无需彼此...
在Java编程中,自定义事件(Custom Events)是一种常见的设计模式,用于在对象之间传递信息。自定义事件允许我们创建特定于应用的事件类型,以便更好地处理和响应应用程序中的特定情况。以下是一个简单的自定义事件...
在Java编程中,自定义事件是扩展应用程序功能和实现组件间通信的重要手段。当你需要在类之间传递特定信息或触发特定行为时,自定义事件能提供极大的灵活性。本教程将深入探讨如何在Java中创建并使用自定义事件,以...
在本实例中,我们将深入探讨如何在ActionScript中实现自定义组件和自定义事件,这对于创建复杂的Flash应用程序至关重要。 首先,让我们了解自定义组件。在ActionScript中,自定义组件是通过继承已有的UIComponent...
在Qt框架中,自定义事件是扩展系统事件处理机制的一种方式,这允许开发者根据特定需求创建并传递自己的事件类型。自定义事件对于跨线程通信尤其有用,因为在多线程环境中,直接修改非本线程对象的状态通常是不允许的...
VB用户自定义事件绕来绕去的,翻了半天书也不好弄清楚,最后还是仔细翻看MSDN的事例弄有了。我把它贴成了VB可运行工程,试运行一下就很有体验感了,学起来省时省力。取之于MSDN用之于需要的学习,不需要消耗积分。
在探讨基于MFC(或QT)的OSG(OpenSceneGraph)自定义事件方法时,首先要明确OSG的基本概念和MFC、QT的事件处理机制。MFC(Microsoft Foundation Classes)和QT都是用于开发Windows应用程序的框架,它们提供了丰富的...
labview自定义事件.vi labview自定义事件.vi
自定义事件是C#中一个非常重要的特性,它允许开发者根据自己的需求设计事件处理流程。本篇将深入探讨如何在C#中定义自定义事件,以及它们在实际开发中的应用。 首先,事件是基于委托(Delegate)的,委托在C#中相当...
javascript实现自定义事件,纯javascript不含vbscript。 通过自定义的HashMap.js和EventManager.js实现自定义事件的监听addEvent和发布fireEvent
Java 自定义事件是Java编程中一个重要的概念,它允许开发者创建自己的事件机制,以实现不同组件之间的通信。在Java中,事件处理主要依赖于事件源(Event Source)、事件(Event)和事件监听器(EventListener)。当...
本篇将深入探讨如何通过继承`QEvent`类来自定义事件,并介绍如何使用`postEvent`和`sendEvent`函数来处理这些自定义事件。 ### 自定义事件 1. **继承QEvent**: 自定义事件的第一步是创建一个新的C++类,该类继承...
cocos2dx-lua 自定义事件类
张志晨:as3语言,最为典型的自定义事件 模板,可以自己修改并扩充。