http://blog.csdn.net/lingwen20/archive/2009/08/21/4470510.aspx
“只有事件发送者才能侦听事件”,这句话的意思是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函数
========================================================================
2010
10-18
AS自定义事件:一个地方派发(抛出),任何地方监听(捕获)
收藏 | 分类: | 查看: 178 | 评论(0)
public static const dispatcher…”,就是声明一个公有的静态对象,这样才使的可以在任意地方访问到并且对他进行抛出和侦听事件。
自定义CustomEvent类,继承Event,并且给他增加一个dispatcher:EventDispatcher属性。
使用这个类,就可以抛出事件并附带数据。
因为使用了 static 设置为静态属性,所以其他任意地方只要注册有这个事件侦听,就能捕获到。
CustomEvent:
package
{
import flash.events.Event;
import flash.events.EventDispatcher;
public class CustomEvent extends Event
{
public static const EVENT_NAME:String=”event_name”;
public static const dispatcher:EventDispatcher=new EventDispatcher();
public var data:Object;
public function CustomEvent(type:String, bubbles:Boolean=false, cancelable:Boolean=false, data:Object=null)
{
super(type, bubbles, cancelable);
this.data=data;
}
override public function clone():Event{
return new CustomEvent(type, bubbles, cancelable, data);
}
}
}
抛出事件时:
var custom:CustomEvent=new CustomEvent(CustomEvent.CLICK);
//custom.data is Object;//发送事件同时,可以传值(可传可不传)
CustomEvent.dispatcher.dispatchEvent(custom);
侦听事件时:
CustomEvent.dispatcher.addEventListener(CustomEvent.CLICK,clickHandler);
分享到:
相关推荐
理解事件流和MXML组件的实例化是学习Flex的基础。开发者需要了解事件何时触发以及如何触发,这与HTML和Flash的执行方式不同。HTML从上到下实例化,而Flash按时间轴顺序执行,Flex则有自己的事件驱动逻辑。 例如,...
在前端开发领域,Flex布局(Flexible Box)是现代网页设计中的一个重要组成部分,它极大地提高了我们构建响应式和动态布局的能力。...为了更深入理解实际场景中的"flex事件",需要更多的上下文信息。
理解和熟练掌握Flex的事件机制对于构建高效、响应迅速的应用程序至关重要。通过合理利用事件的捕获、目标和上浮三个阶段,开发者可以更精细地控制应用程序的行为,并确保用户交互流畅自然。此外,了解如何手动触发...
7. **文档支持**:提供有关每个事件的简短说明,帮助开发者理解其用途和行为。 FCG.air文件很可能就是Flex事件代码生成器的安装文件,采用Adobe AIR技术进行跨平台部署。Adobe AIR允许开发者创建桌面应用,使用Web...
对于初学者而言,理解和掌握Flex中的事件机制是非常重要的一步。本文将深入探讨Flex事件机制的基础概念、事件注册通道、事件触发方式、事件分发机制等关键知识点,并尝试以简单明了的方式进行解释。 #### 二、事件...
Flex ActionScript3.0事件机制的Demo, 举例说明了事件的三个阶段,事件的派发,事件的侦听,事件的拦截,自定义事件等相关知识点. 以上知识点在Demo中都有体现,初学者请仔细分析代码,加强理解,多调试、修改、验证以加深...
Flex事件机制是Adobe Flex应用...总结,Flex事件机制是构建交互性应用的基础,理解并熟练掌握它能够帮助开发者编写出更加高效、响应迅速的Flex应用程序。通过合理地组织和管理事件,可以提高代码的可维护性和用户体验。
理解并掌握Flex事件,是实现复杂界面逻辑的前提。 1. **事件类型**:Flex定义了一系列事件类型,包括但不限于`MouseEvent`、`KeyboardEvent`、`FocusEvent`、`TouchEvent`等,覆盖了各种常见的用户交互行为。 2. ...
在深入理解 Flex 事件机制之前,我们需要先了解一下基本概念。 1. **事件的概念** 事件可以视为一种通知机制,当特定条件满足时,事件被触发并通知感兴趣的接收者。例如,`MouseEvent` 类表示与鼠标操作相关的事件...
虽然压缩包中的`Test`文件没有给出具体代码,但我们可以通过以下简化的示例来理解Java处理Flex事件的基本过程: ```java public class FlexEventProcessor implements MessageBroker.MessageListener { @Override ...
Flex 事件流是Flex应用程序中事件处理的核心机制,它使得组件之间能够有效地通信和响应用户交互。在深入探讨之前,我们需要理解几个基本概念。 1. **事件机制**:事件是Flex中的一种通信方式,当特定条件满足时,...
通过理解自定义事件的创建、派发和监听,开发者可以构建出更加灵活和可扩展的应用程序。在`ex3_03_starter.fxp`项目中,你可以看到这些概念的实际应用,从而更好地学习和掌握Flex4自定义事件的用法。
Flex事件机制是Adobe Flex框架中一个关键的概念,它允许组件之间通过事件进行通信。...理解并熟练运用这一机制,能帮助开发者更好地设计和实现复杂的Flex应用程序。对于Flex开发者来说,掌握这些知识点至关重要。
首先,我们要理解Flex事件模型的基础。在Flex中,事件是由Event类或其子类表示的,它们是传递信息的对象。当一个事件发生时,它会从源对象(通常是组件)出发,沿着事件流传播。这个流分为两个阶段:冒泡阶段和捕获...
本资料“关于flex事件的讲解.pdf”将深入探讨Flex事件系统,帮助学习者更好地理解和应用这一关键概念。 1. **事件模型**:Flex采用发布/订阅模型处理事件,事件源(如UI组件)发布事件,而感兴趣的接收者(监听器)...
通过理解事件流、熟悉标准事件、掌握自定义事件的创建和处理,以及学会使用事件阻止功能,你将能够更好地构建富客户端应用程序。对于初级Flex程序员而言,深入学习和实践这些概念是提升编程技能的必经之路。
为了更好地理解事件流的工作原理,我们可以考虑一个简单的Flex应用程序示例,该程序包含多个嵌套容器和一个按钮。假设这个界面如下所示: - 顶层容器:`root` - 中间容器:`container1` - 内部容器:`container2` - ...
Flex4.5事件机制是Flex应用程序开发中的...理解Flex4.5的事件机制对于开发高效、响应式的用户界面至关重要。通过熟练掌握事件的创建、监听、处理以及事件流的概念,开发者能够构建出更加动态和用户友好的Flex应用程序。
理解并熟练运用Flex控件事件,可以极大地提升应用程序的用户体验和功能完整性。 1. 事件模型: Flex采用基于事件的模型来处理用户交互。事件是从事件源(通常是UI控件)发出的信号,然后由事件监听器处理。事件...
如何接收事件?如何做到AS3.0的标准事件编程? 类似JAVA的监听或观察者模式 Event改变的部分很多,正在想怎样用一个有条理的方式来讲解Event和它相关的诸多内容,让我们感到比较容易理解,记忆和接受。