- Adobe Flex 教程
- Flex - 首頁
- Flex - 概述
- Flex - 環境
- Flex - 應用
- Flex - 建立應用
- Flex - 部署應用
- Flex 生命週期階段
- Flex - 使用 CSS 樣式
- Flex - 使用皮膚樣式
- Flex - 資料繫結
- Flex - 基本控制元件
- Flex - 表單控制元件
- Flex - 複雜控制元件
- Flex - 佈局面板
- Flex - 視覺效果
- Flex - 事件處理
- Flex - 自定義控制元件
- Flex - RPC 服務
- Flex - FlexUnit 整合
- Flex - 除錯應用
- Flex - 國際化
- Flex - 列印支援
- Adobe Flex 資源
- Flex - 快速指南
- Flex - 有用資源
- Flex - 討論
Flex 生命週期階段
Flex 應用的生命週期
雖然您可以不瞭解應用程式的生命週期階段也能構建 Flex 應用程式,但瞭解其基本機制以及事件發生的順序仍然很有益。這將有助於您配置諸如在執行時載入其他 Flex 應用程式以及管理在執行時載入和解除安裝類庫和資源的過程之類的功能。
充分理解 Flex 應用程式的生命週期將使您能夠構建更好的應用程式並對其進行最佳化,因為您將知道在何處最佳地執行程式碼。例如,如果您需要確保某些程式碼在預載入器期間執行,則需要知道將該事件的程式碼放在何處。
當我們在瀏覽器中載入 Flex 應用程式時,在 Flex 應用程式的生命週期中會發生以下事件。
以下是關於不同 Flex 生命週期事件的簡要說明。
| 序號 | 事件及描述 |
|---|---|
| 1 | preInitialize: mx.core.UIComponent.preinitialize 事件型別:mx.events.FlexEvent.PREINITIALIZE 此事件在元件初始化序列開始時排程。排程此事件時,元件處於非常原始的狀態。許多元件(例如 Button 控制元件)會建立內部子元件來實現功能。例如,Button 控制元件建立內部 UI TextField 元件來表示其標籤文字。 當 Flex 排程 pre-initialize 事件時,元件的子元件(包括所有內部子元件)尚未建立。 |
| 2 | initialize: mx.core.UIComponent.initialize 事件型別:mx.events.FlexEvent.INITIALIZE 此事件在 pre-initialize 階段之後排程。Flex 框架在此階段初始化此元件的內部結構。當元件新增到父元件時,此事件會自動觸發。 通常您不需要呼叫 initialize()。 |
| 3 | creationComplete: mx.core.UIComponent.creationComplete 事件型別:mx.events.FlexEvent.CREATION_COMPLETE 當元件完成其構建、屬性處理、測量、佈局和繪製時,排程此事件。 此時,根據其 visible 屬性,即使元件已繪製,它也可能不可見。 |
| 4 | applicationComplete: spark.components.Application.applicationComplete 事件型別:mx.events.FlexEvent.APPLICATION_COMPLETE 在應用程式初始化、由 LayoutManager 處理並附加到顯示列表後排程。 這是應用程式建立生命週期的最後一個事件,表示應用程式已完全載入。 |
Flex 生命週期示例
讓我們按照以下步驟來了解透過建立一個測試應用程式來理解 Flex 應用程式的測試生命週期:
| 步驟 | 描述 |
|---|---|
| 1 | 建立一個名為 HelloWorld 的專案,其包名為 com.tutorialspoint.client,如Flex - 建立應用章節中所述。 |
| 2 | 修改HelloWorld.mxml,如下所述。保持其餘檔案不變。 |
| 3 | 編譯並執行應用程式,以確保業務邏輯按要求工作。 |
以下是修改後的 mxml 檔案 src/com.tutorialspoint/HelloWorld.mxml 的內容。
<?xml version = "1.0" encoding = "utf-8"?>
<s:Application xmlns:fx = "http://ns.adobe.com/mxml/2009"
xmlns:s = "library://ns.adobe.com/flex/spark"
xmlns:mx = "library://ns.adobe.com/flex/mx"
width = "100%" height = "100%" minWidth = "500" minHeight = "500"
initialize = "reportEvent(event)"
preinitialize = "reportEvent(event)"
creationComplete = "reportEvent(event)"
applicationComplete = "reportEvent(event)">
<fx:Style source = "/com/tutorialspoint/client/Style.css" />
<fx:Script>
<![CDATA[
import mx.controls.Alert;
import mx.events.FlexEvent;
[Bindable]
private var report:String = "";
private function reportEvent(event:FlexEvent):void {
report += "\n" + (event.type + " event occured at: "
+ getTimer() + " ms" + "\n");
}
]]>
</fx:Script>
<s:BorderContainer width = "500" height = "500" id = "mainContainer"
styleName = "container">
<s:VGroup width = "100%" height = "100%" gap = "50"
horizontalAlign = "center" verticalAlign = "middle">
<s:Label textAlign = "center" width="100%" id = "lblHeader"
fontSize = "40" color = "0x777777" styleName = "heading"
text = "Life Cycle Events Demonstration" />
<s:TextArea id = "reportText" text = "{report}" editable = "false"
width = "300" height = "200">
</s:TextArea>
</s:VGroup>
</s:BorderContainer>
</s:Application>
完成所有更改後,讓我們像在Flex - 建立應用章節中所做的那樣,以普通模式編譯並執行應用程式。如果您的應用程式一切正常,它將產生以下結果:[ 線上試用 ]