`

Flex自定义事件学习

阅读更多

理论学习
http://book.51cto.com/art/201006/208224.htm

http://developer.51cto.com/art/201008/218947.htm

实践学习
http://fhuan123.iteye.com/blog/326206


http://www.cnblogs.com/nianshi/archive/2010/05/13/1734565.html

http://hi.baidu.com/fenglei0213/blog/item/a688c8fcd35266f3fd037f20.html




http://liguoliang.com/2010/custom-event-must-override-clone-method/

Flex 自定义Event 低级错误一例: 未重写Clone方法, 导致类型转换失败
432 views December 10, 2010 by 老李
在Event监听并转发过程中, 因为没用重写Clone方法, 导致实例被Clone为普通Event实例.

情况是这样的:
自定义Event: EventTest: 继承Event, 增加了一些属性, 重写了toString(), 未重写Clone.

出现问题: 创建EventTest实例后, 多次监听并转发, 在监听, 转发过程中, Event实例对象被Clone, 因为未重写Clone方法, 会通过Event类的Clone方法进行复制, 仅会复制其EventType, 且类型为Event.

形象的说就是: eventTest –> 被监听到, 准发 ->框架Clone eventTest(EventTest类中未重写Clone方法, 于是eventTest被克隆为一个普通Event) –> 再次监听, Event类型不吻合, 报错.

公司代码规范中严格规定了自定义Event必须及时重写Clone与toString方法, 写了这么久, 我才领悟到原因. 败了



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 函数,当执行到
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函数

 

分享到:
评论

相关推荐

    flex4自定义事件用法

    Flex4是一种基于ActionScript 3.0的框架,用于构建富互联网应用程序(RIA)。在Flex应用中,事件处理是...在`ex3_03_starter.fxp`项目中,你可以看到这些概念的实际应用,从而更好地学习和掌握Flex4自定义事件的用法。

    flex自定义组件事件DEMO

    下面我们将详细探讨Flex自定义组件、事件处理以及如何通过示例进行学习。 1. Flex自定义组件:Flex允许开发者通过继承现有的UIComponent或者更具体的类(如Button、Canvas等)来创建自定义组件。这样可以定义独特的...

    flex 自定义控件、事件

    深入学习Flex自定义控件和事件处理,不仅可以帮助你创建高度定制的应用,还能提高代码复用性和可维护性。通过实践和研究,开发者可以更好地掌握Flex的精髓,从而构建出更具吸引力和交互性的用户界面。

    Flex 自定义组件ImageViewer

    学习和理解Flex的组件生命周期以及如何创建自定义组件,可以帮助开发者更有效地构建具有复杂交互和行为的应用程序。通过深入研究ImageViewer组件的实现,我们可以掌握如何在Flex中处理图像展示、交互和性能优化等...

    flex 自定义组件

    Flex自定义组件是Adobe Flex框架中的一个重要特性,它允许开发者创建具有特定功能和外观的UI元素,以满足项目中独特的用户界面需求。Flex是一个开源的、基于MXML和ActionScript的开发框架,主要用于构建富互联网应用...

    Flex自定义加载条(小起)

    在本文中,我们将深入探讨如何在Flex...总结来说,自定义Flex加载条是一项涉及组件样式、模板、动画和事件处理的综合工作。通过学习和实践这个示例,你可以掌握如何根据项目需求定制出独特的加载条组件,提升用户体验。

    各种Flex自定义组件

    在标题“各种Flex自定义组件”中,我们可以推断这是一个包含多种定制Flex组件的资源集合。这些组件可能包括时间选择器、数据网格(datagrid)、树形视图(tree)和下拉组合框(combox)。每个组件都有其特定的用途和...

    flex自定义文本编辑器

    "flex自定义文本编辑器"是一个这样的示例,它展示了如何利用Flex4框架构建一个具备特定功能的文本编辑工具,同时集成了自定义的拾色器功能。下面我们将详细探讨这个项目的相关知识点。 首先,我们关注的是`Text...

    flex 自定义加载进度框

    在“flex自定义加载进度条”的场景中,开发者可能想要替换Flex默认的Application预加载器,以提供更个性化的用户体验。自定义预加载器可以让开发者自由设计加载界面的外观和交互,例如改变颜色、形状或动画效果,...

    Flex4视频教程_02-03用AS自定义事件.rar

    通过学习这个Flex4视频教程,你将能够熟练地在自己的Flex4项目中运用自定义事件,提高代码的可扩展性和可维护性。自定义事件不仅可以用于组件间的通信,还可以在模块化设计中发挥重要作用,帮助构建复杂而灵活的应用...

    Flex 分页组件,flex自定义组件

    在Flex中,分页组件通常是自定义组件,因为Flex的标准库并未提供内置的分页解决方案。开发者通常需要根据实际需求来设计和实现这样的组件。以下是对Flex分页组件的详细解释: 1. **分页机制**:分页的核心是将大...

    Flex自定义生成图表源码.rar

    这个压缩包“Flex自定义生成图表源码.rar”显然包含了一组用于创建自定义图表的源代码,这对于开发者来说是宝贵的资源,特别是那些在Flex环境中工作并需要展示数据的可视化效果的人。 在Flex中,生成图表主要依赖于...

    Flex自定义控件

    - 提供的"Flex自定义控件"压缩包很可能是包含了几个示例自定义控件的源代码,通过查看和学习这些示例,开发者可以更好地理解自定义控件的工作原理,并从中获取灵感。 总之,Flex自定义控件是提升Flex应用程序用户...

    Flex4视频教程_02-02用mxml自定义事件.rar

    在"Flex4视频教程_02-02用mxml自定义事件.rar"这个资源中,我们将探讨如何在MXML中定义和使用自定义事件。 首先,理解事件模型的基础至关重要。在Flex中,事件是`flash.events.Event`类的子类。要创建自定义事件,...

    Flex的事件机制笔记

    在本文中,我们将深入探讨Flex事件的各个方面,包括事件流、事件类型、自定义事件的创建与处理。 首先,Flex的事件流分为三个阶段:冒泡阶段、捕获阶段和目标阶段。冒泡阶段是从最具体的子组件开始,沿着组件层次...

    Flex自定义的温度计实现

    标题提到的"Flex自定义的温度计实现"是一个具体实例,展示了如何利用ActionScript(AS)在Flex环境中创建一个温度计图形用户界面(GUI)组件。Flex是Adobe开发的一个开源框架,主要用于构建富互联网应用程序(RIA)...

    Flex自定义Feature的style风格

    8. **代码示例**:在提供的文档“Flex自定义Feature的style风格.doc”中,应该包含具体的代码片段,展示如何创建和应用自定义Style。 通过以上知识点,开发者可以根据需求创建出各种独特且富有表现力的地图展示效果...

    flex 4 学习资料

    Flex4)用一个简单登录流程代码演示Flex自定义事件声明、触发__精灵★ 's Flex/Flash/AS3 技术 & 网络游戏_百度空间 分享:Flex4+Struts2+Spring3+Blazeds 百度空间_应用平台 Flex中嵌入Google地图 - 菩提树 - ITeye...

    flex4自定义组件皮肤

    在Flex4中,自定义组件皮肤是提升应用视觉效果和用户体验的重要手段。下面将详细介绍如何在Flex4中自定义组件皮肤。 1. **组件皮肤的基本概念** - 组件皮肤是Flex中改变组件外观的一种方式,通过定义不同的皮肤,...

    flex开发自定义控件

    本文将深入探讨Flex自定义控件的创建过程,从前期准备到实际应用,帮助读者掌握这一关键技能。 #### 前期准备与创建自定义控件 在开始创建自定义控件之前,你需要确保已经安装了Adobe Flex SDK和相应的IDE,例如...

Global site tag (gtag.js) - Google Analytics