Flex3组件与框架生命周期详解

需积分: 32 2 下载量 52 浏览量 更新于2024-07-30 收藏 730KB PDF 举报
"该文档详细介绍了Flex3组件和框架的生命周期,是针对Flex开发者的重要学习资料,涵盖了组件从创建到销毁的各个阶段,包括构造、添加、初始化、失效与生效机制、更新和移除等阶段,并探讨了Flex应用程序的生命周期,如构造、初始化、预加载、子类创建和显示等阶段。此外,还分享了Flex组件开发的最佳实践,如使用构造器、初始化方法、失效生效周期以及样式应用等。" 在Flex3中,组件的生命周期是一个关键概念,它描述了组件从创建到被移除的整个过程。组件生命周期分为多个阶段: 1. **构造阶段**:组件的实例化开始于此,通过`new`关键字创建。在这个阶段,组件的基本结构被建立,但通常不包含任何可视元素。 2. **添加阶段**:组件被添加到父容器中,此时它开始参与布局和渲染流程。组件的`_addedToParent()`方法被调用,表示组件已经存在于显示列表中。 3. **初始化阶段**:组件开始准备显示,初始化其属性和事件监听器。`initialize()`方法在此阶段被调用,这是进行初始设置的理想时机。 4. **失效与生效机制阶段**:随着组件状态的变化,可能会经历失效和生效的周期。这涉及到`commitProperties()`、`updateDisplayList()`和`validateNow()`等方法,用于确保组件的属性变化反映在视觉表示上。 - **失效阶段**:当组件的属性发生变化时,组件会被标记为失效,准备进行更新。 - **生效阶段**:组件会调用`validateProperties()`和`validateDisplayList()`来处理失效的属性并重新绘制。 5. **更新阶段**:组件完成布局和渲染,更新其显示内容。`updateDisplayList()`方法在此阶段执行,允许组件根据自身的尺寸和位置更新其子项。 6. **移除阶段**:当组件从显示列表中移除时,`removedFromParent()`方法被调用,标志着组件生命周期的结束。 Flex应用程序的生命周期同样重要,从编译阶段开始,经过构造、初始化、预加载、子类创建和显示阶段,直到最终的销毁阶段。每个阶段都有特定的任务,例如编译阶段涉及代码转换,初始化阶段处理外部接口,预加载阶段加载资源,子类创建和显示阶段构建和显示UI,最后的销毁阶段清理资源。 在开发Flex组件时,最佳实践包括正确使用构造器来初始化组件,避免在构造器中进行耗时操作;利用初始化方法进行组件的配置;理解和利用失效生效周期来优化性能;使用标识变量跟踪组件状态;实现验证方法以确保数据的正确性;以及合理应用和访问样式以保持组件的外观一致性。 理解Flex3组件和框架的生命周期对于高效开发和优化Flex应用程序至关重要,它帮助开发者更好地控制组件的行为,提升应用程序的性能和用户体验。通过深入学习和实践,开发者可以充分利用Flex的强大学习资源,提高其在Flex开发中的专业水平。
2010-12-30 上传
Adobe Flex 框架的SDK 美中不足之处就是部分由良好的半黑盒子系统所创建;这就是说, 在大多数情况下,我们这些开发者在项目周期中没有时间或精力去真正地深入到未知领域。 从技术上来讲,Flex 框架的不是一个黑盒子,你可以阅读和查看它的所有源码。由于代码 的复杂性及它是如何设计的,我们往往把框架看成是如何输入、得到什么样的输出。大多数 开发人员,包括作者,往往在工作中学习Flex,通过验证、试验、研究或按照他人写的博客 提到的观点来寻找新的技巧和技术。 Adobe 已经做了非常了不起的工作是Flex 框架的文档,它已被细分为两大类:用户指南和 API(ASDoc)文档。然而,即使他们有大量的文档,用户指南和API 文档之间的还是有一个 很大的差距。用户向导涵盖了一系列的课题,从如何开始到使用比较复杂的功能;但都停止 在这些不很复杂的功能上,比如:样式扩展的技巧,元数据可以做和不可以做的,当然也包 括Flex 框架和组件生命周期。有很高层次的概述,但这些都在用户能弄明白的能力范围之 外。 从API 文档中我们可以推断出很多功能和命令,有时它们是引导我们,但也有时关于一些信 息会戏弄我们。通常,API 文档假定你知道要查找的东西,它们只是解释一下如何去做;但 不会告诉你何时或为什么去用它们。由于这种宏观的指导与微观的API 之间的差距,优化开 发成为了一个黑色艺术,需要程序员通过多年的经验在试验和错误中确定最佳的做法。加上 这些与Flex 只有5 年左右的历史,它从最初的表现进化到了引人注目的阶段,而我们大多 处于技术的初级阶段。 然而,作为第三方的开发者,并不是唯一留在外面的。多数Adobe 的工程师也没有完全了 解框架的细微部分。詹姆斯参加了Adobe 2008 年MAX 会议关于Flex 组件的介绍和Deepa 论坛关于Flex 的生命周期评价。 她的报告一半是关于生命周期,甚至其中一半是关于在当前Flex3 的生命周期,其余的是关 于Flex4 的变化。 随着她在高层次的深入概述,提到近期一个Flex 架构师使她最终通过了整个生命周期。她 对观众说希望能早点了解这些信息,这样能使她能成为一个更好的工程师。 我们的观点是Flex 迷惑了我们许多人,甚至一些最受尊敬的工程师。这是一个复杂的系统 设计得非常强大,易扩展,灵活。然而,这种灵活性推展和实现创造了许多可能性。这些可 能性很多都不是最好的开发方式,甚至有可能不利于整体性能,稳定性和可扩展性的应用前 景。 本文的目的是尝试照耀到整个生命周期,使我们一些启示,作为一个开发社区,用Flex 能 创造更好的应用程序和组件。值得提醒的是,以下信息大部分是从阅读源代码推断的,一些 是好的文档,也有一些不是。如果你看到一些不太正确的,或许可以用一个更好的解决方式, 欢迎随时联络DevelopmentArc 我们(info