`

Flex事件理解

阅读更多

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);

 

分享到:
评论

相关推荐

    flex事件机制的demo

    Flex ActionScript3.0事件机制的Demo, 举例说明了事件的三个阶段,事件的派发,事件的侦听,事件的拦截,自定义事件等相关知识点. 以上知识点在Demo中都有体现,初学者请仔细分析代码,加强理解,多调试、修改、验证以加深...

    flex 事件与自定义事件

    如何接收事件?如何做到AS3.0的标准事件编程? 类似JAVA的监听或观察者模式 Event改变的部分很多,正在想怎样用一个有条理的方式来讲解Event和它相关的诸多内容,让我们感到比较容易理解,记忆和接受。

    flex的事件详解

    介绍flex 的事件机制,理解flex的事件传输原理

    flex弹性布局的理解。

    帮助理解flex属性。 1. 什么是 flex 布局 2. 基本概念 3. 容器的属性 4. 项目的属性1. 什么是 flex 布局 2. 基本概念 3. 容器的属性 4. 项目的属性 帮助理解项目属性 1. order 2. flex-grow 3. flex-shrink 4. flex-...

    extjs,flex,dojo的理解

    extjs,flex,dojo的理解

    理解 Flex_itemRenderer

    理解_Flex_itemRenderer 理解_Flex_itemRenderer 理解_Flex_itemRenderer

    关于flex事件的讲解.rar

    讲解了flex的事件机制,并给出了具体的应用讲解和例子,对学习者理解flex比较有帮助

    flex.pdf CSS3属性

    本文内容叙述撇开以往顺流而下的...所以,这里,直 接抛开字面意思,我们可以将”box-flex”理解为”房子-分配”。box 为“盒子” 的意思,我们可以理解为当下价格巨高的“房子”,”flex”指兄弟几个“分配房 子”。

    Flex4权威指南+随书源代码+Flexbuild使用工具

    1. 理解RIA 2. 开始 3. 布局界面 4. 使用简单的控件 5. 处理事件 6. 使用远程XML数据 7. 创建类 8. 使用数据绑定和集合 9. 将应用程序拆分成组件 10. 使用DataGroup和List 11. 创建和分派事件 12. 使用DataGrid与...

    Flex与ActionScript3程序开发

    Flex与ActionScript3程序...相信读者在学习完本书后,在使用Flex进行组件开发和数据处理、使用Flex高效制作皮肤、将Flex与 Flash紧密结合、使用Flex与服务器端语言通信、对Flex应用进行优化等方面都会有深刻的理解和掌握

    [Flex与ActionScript.3程序开发].陈爽,付凯.扫描版

    在使用Flex进行组件开发和数据处理、使用Flex高效制作皮肤、将Flex与Flash紧密结合、使用Flex与服务器端语言通信、对Flex应用进行优化等方面都会有深刻的理解和掌握。 《Flex与ActionScript 3程序开发》的所有实例...

    《Flex与ActionScript程序开发》[PDF]

    相信读者在学习完本书后,在使用Flex进行组件开发和数据处理、使用Flex高效制作皮肤、将Flex与 Flash紧密结合、使用Flex与服务器端语言通信、对Flex应用进行优化等方面都会有深刻的理解和掌握。  本书的所有实例...

    Flex中文教程--来自Flex 官方文档

    2. 本文所有资料均来自Flex 官方文档,其英文版权归Adobe 公司所有。 3. 文中某些内容根据译者的理解稍作改动,因此与原版英文在文字上不完全一致。同时,由于译者水平有限,翻译不妥之处请大家多多见谅。

    理解Flex3组件和框架的生命周期.pdf

    理解Flex3组件和框架的生命周期.理解Flex3组件和框架的生命周期

    深入理解Flex布局以及计算

    对于Flex布局,阅读了大漠老师和其他老师写的文章后,我还是不太理解Flexbox是如何弹性的计算子级项目的大小以及一些其他细节。在大漠老师的帮助下,我去查阅Flexbox的W3C规范文档。注:本篇博文不适合未接触过Flex...

    理解Flex3的组件和框架的生命周期.doc

    理解Flex3的组件和框架的生命周期理解Flex3的组件和框架的生命周期

    Flex布局笔记.docx

    关于Flex布局的笔记整理,能够详细理解Flex布局原理和用法,仅供自己学习。

    理解Flex3的组件和框架的生命周期

    理解Flex3的组件和框架的生命周期,分析flex的设计原理

Global site tag (gtag.js) - Google Analytics