`
bjlishigui
  • 浏览: 27994 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

flex创建组件时初始化事件

    博客分类:
  • flex
阅读更多
flex组件在建立的时候都会经历四个事件:preinitialize, initialize, creationComplete和updateComplete(updateComplete事件在任何改动视觉的情况下都会发生,不是初始化时独有的)。我这里有个例子来检测在嵌套和平行的情况下,测试各个组件的事件抛出顺序。


<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"
preinitialize="showEvent(event)"
initialize="showEvent(event)"
creationComplete="showEvent(event)"
updateComplete="showEvent(event)">

<mx:Script>
<![CDATA[
   import flash.utils.getTimer;
   private function showEvent(event:Event):void
   {
    trace(flash.utils.getTimer().toString()+" >> "+event.currentTarget.name+" "+event.type);
   }
]]>
</mx:Script>

<mx:Canvas id="canv1"
preinitialize="showEvent(event)"
initialize="showEvent(event)"
creationComplete="showEvent(event)"
updateComplete="showEvent(event)">

<mx:Button id="btn1"
   preinitialize="showEvent(event)"
   initialize="showEvent(event)"
   creationComplete="showEvent(event)"
   updateComplete="showEvent(event)"/>
</mx:Canvas>

<mx:Button id="btn2"
   preinitialize="showEvent(event)"
   initialize="showEvent(event)"
   creationComplete="showEvent(event)"
   updateComplete="showEvent(event)"/>

</mx:Application>

它的输出是:

1299 >> eventTest0 preinitialize

1307 >> canv1 preinitialize

1310 >> btn1 preinitialize

1318 >> btn1 initialize

1319 >> canv1 initialize

1320 >> btn2 preinitialize

1321 >> btn2 initialize

1321 >> eventTest0 initialize

[SWF] G:\projects\eventTest\bin-debug\eventTest.swf - 588,818 bytes after decompression

1387 >> btn1 creationComplete

1387 >> btn1 updateComplete

1387 >> canv1 creationComplete

1387 >> canv1 updateComplete

1388 >> btn2 creationComplete

1388 >> btn2 updateComplete

1388 >> eventTest0 creationComplete

1390 >> eventTest0 updateComplete

看着有点混乱,不过仔细看看,可以把过程分成两个部分。很明显,所有的creationComplete和updateComplete发生在第二次update的时候,之前flex组件只是做一些设置和计算的工作,并没有在画布上画任何东西。除此以外,还有这么一些规律:

就单个组件而言,事件的抛出顺序是preinitialize,initialize,creationComplete

嵌套关系的两个组件(比如Canvas和button1),preinitialize先外后内,initialize和creationComplete先内后外。只是creationComplete要在下一次update才会发生。
平行关系的两个组件(比如Canvas和button2),按mxml内的顺序,只有前面组件initialize结束后,后面的组件才会抛出preinitialize。


引用别人的文章!


分享到:
评论

相关推荐

    关于Flex 初始化的research

    总之,理解Flex组件的生命周期对于正确处理组件初始化至关重要。在开发自定义组件时,必须确保在适当的生命周期阶段执行相应的操作,以避免因过早访问未初始化的属性而导致的问题。通过合理利用组件生命周期中的事件...

    Flex 自定义组件ImageViewer

    理解组件生命周期至关重要,因为它涉及到组件何时初始化、何时准备显示、何时接收用户输入以及何时被销毁。以下是一些关键的生命周期方法: 1. **initialize()**: 当组件实例的所有属性都已设置且即将显示时,Flex...

    flex 重写组件

    - **`UIComponent.createChildren()`**:用于创建组件的子组件。 - **`UIComponent.commitProperties()`**:用于提交组件属性的变化,特别是在计算尺寸时需要用到的属性。 - **`UIComponent.measure()`**:用于...

    flex 高级自定义组件

    这里通常用来初始化组件的内容和结构,但不涉及子组件的布局和定位。而`updateDisplayList()`方法则用于在测量阶段之后,根据组件的尺寸和位置属性来定位和绘制子组件,包括它们的大小和位置。 布局方面的定制,...

    Flex3组件和框架的生命周期

    在这个阶段,应用程序会创建并初始化所有的子组件。每个子组件都会依次经历自己的生命周期阶段。 **Flex应用程序的子类显示阶段** 子组件创建完成后,进入显示阶段。这时,所有组件已经被添加到显示列表中,准备...

    Flex Application 初始化顺序

    一旦组件初始化并显示出来,Flex应用程序就开始监听和处理各种用户交互事件,如点击、滚动等。 10. **运行时行为**: 应用程序进入运行模式,用户可以与界面交互,同时后台逻辑和数据绑定会持续工作,确保应用...

    flex事件运行流程

    最后,`applicationComplete`事件表示所有组件初始化并显示完毕。 在Application对象的生命周期中,一般顺序如下: 1. 创建Application对象实例。 2. 初始化Application的systemManager。 3. Application派发`...

    Flex4自定义组件开发.pdf

    - **诞生阶段**:在这个阶段,组件被创建并初始化。主要事件包括`creationComplete`等。 - **生命期阶段**:组件处于活动状态,响应用户的交互和数据变化。这一阶段涉及到的事件较多,例如`propertyChange`、`data...

    flex3组件和框架的生命周期

    在这个阶段,组件对象被创建,并且其属性和事件监听器被初始化。构造函数负责组件的基本配置和初始状态设置。 **添加阶段** 组件被添加到显示列表中的过程称为添加阶段。此时,组件开始接收来自Flex框架的事件通知...

    精讲Flex4组件开发(附源码)

    在理解Flex4组件生命周期方面,学习者会了解到组件从创建到销毁的各个阶段,包括初始化、测量、布局、绘制和更新。掌握这些生命周期方法对于优化性能和处理用户交互至关重要。例如,`createChildren()` 方法用于创建...

    【完美翻译】Flex组件的生命周期

    Flex组件的生命周期是Adobe Flex框架中一个至关重要的概念,它涉及到UIComponent类及其子类(如Button、Canvas等)在创建、初始化、显示和销毁过程中的各个阶段。深入理解组件生命周期有助于开发者更有效地管理组件...

    Flex3+组件拖放教程

    这通常是在组件的初始化代码中完成的,通过调用`setDragEnabled(true)`方法来启用组件的拖动功能。同时,需要指定拖动开始时的源数据,这可以通过创建一个`DragSource`实例并将其附加到组件上实现。例如: ```...

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

    在这个阶段,组件执行更深层次的初始化任务,如绑定事件监听器、配置子组件等。开发者可以通过覆盖`initialize()`方法来自定义初始化行为。 #### 失效机制阶段 在这一阶段,组件可能会因各种原因而失效,比如用户...

    Flex启动与初始化

    Flex应用程序在发布时会生成一个特殊的SWF文件,其内部结构对于理解应用程序如何加载和初始化至关重要。该SWF文件具有以下特点: 1. **双帧结构**:Flex生成的SWF文件是一个两帧的MovieClip。这种设计的主要目的是...

    flex组件,功能强大的下拉框

    4. **初始化显示已选择项** 当页面加载时,该组件能够自动显示之前用户已选择的选项,这提高了用户体验,因为他们无需再次手动设置。这种功能通常是通过存储和恢复用户偏好来实现的,可能涉及到本地存储或服务器端...

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

    - **利用初始化阶段**:初始化方法是设置组件状态和事件监听器的理想位置。这里可以处理更复杂的初始化逻辑。 - **分离生命周期阶段**:将不同的生命周期阶段分开处理,确保每个阶段只关注自己的任务,这样可以使...

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

    3. 初始化阶段:组件的初始化方法执行,如设置初始值和绑定事件监听器。 4. 失效机制阶段:组件在不活动时进入无效状态,减少不必要的计算和更新。 5. 生效机制阶段:组件重新变得有效,进行必要的更新和重绘。 6. ...

    Flex轮弹组件

    3. Flex组件生命周期:从创建到销毁的过程,包括初始化、测量、布局、绘制等阶段。 4. Event-driven编程:Flex应用主要依赖事件驱动模型,轮弹组件会监听并响应用户的滚动操作。 5. 组件状态管理:了解组件在不同...

    flex中的组件重写例子

    1. **实例化**:当需要组件时,Flex会创建组件实例。 2. **初始化**:组件会调用initialize()方法进行初始化,加载初始数据和设置默认值。 3. **布局**:组件调用测量(measure)和布置(layout)方法来确定其大小和...

Global site tag (gtag.js) - Google Analytics