技術(shù)分享 如何將Flex3應(yīng)用程序遷移到Flex4
在本文中,我將簡(jiǎn)要概述Flex4的主要目的和架構(gòu)區(qū)別并介紹組件、布局、狀態(tài)使用和效果方面的變化。我還將針對(duì)使用Flex4編譯Flex3應(yīng)用程序時(shí)遇到的情況回答一些提問。本文無法涵蓋Flex4的所有新增功能。相關(guān)信息請(qǐng)閱讀Flex4新增功能一文。
將Flex3應(yīng)用程序遷移到Flex4
將Flex3應(yīng)用程序遷移到Flex4時(shí),步驟并不復(fù)雜。除了一些缺陷修復(fù)以及默認(rèn)主題稍有變化,您的應(yīng)用程序通??梢韵馞lex3中那樣正常運(yùn)行(或更好)。但您必須注意幾點(diǎn)。
◆播放器依賴性
請(qǐng)務(wù)必針對(duì)FlashPlayer10進(jìn)行編譯。Flex4SDK需要FlashPlayer10支持。
字體選擇器需要一個(gè)命名空間
CSS字體選擇器將Flex類命名為style。例如,以下是Button和DateField的字體選擇器:
- Button{
- cornerRadius:10;
- }
- DateField{
- color:#780800;
- }
從Flex4SDK開始,當(dāng)應(yīng)用程序使用字體選擇器時(shí),需要命名空間。如果您只在Flex應(yīng)用程序中使用MXML2006命名空間,請(qǐng)將以下默認(rèn)命名空間聲明添加到CSS中:
- <mx:Style>
- @namespace"http://www.adobe.com/2006/mxml";
- …
- </mx:Style>
如果在應(yīng)用程序中使用多個(gè)命名空間,您需要在CSS中提供各個(gè)命名空間。有關(guān)示例,請(qǐng)參閱本文稍后部分中的Flex4中的命名空間與包。
此外,如果應(yīng)用程序使用StyleManager.getStyleDeclaration("Button")等方法,字體選擇器必須包含它的包。例如,對(duì)getStyleDeclaration()的調(diào)用將改為StyleManager.getStyleDeclaration("mx.controls.Button")。
◆主題更改
Flex3(MX)組件的默認(rèn)主題現(xiàn)在是Spark主題。因此,當(dāng)您使用Flex4SDK編譯應(yīng)用程序時(shí),它的外觀和大小可能有所不同。但是,如果要使用Flex3的外觀,您還是可以做到的,因?yàn)镕lex4包含F(xiàn)lex3的Halo主題。要使用Halo主題進(jìn)行編譯,您可以使用附加編譯器參數(shù)-compatibility-version=3.0。在FlashBuilder4中,您可以在“PropertiesPanel”(屬性面板)中這樣做。在“PropertiesPanel”(屬性面板)中,選擇“FlexCompiler”(Flex編譯器)并單擊“UseFlex3compatibilitymode”(使用Flex3兼容性模式)復(fù)選框(請(qǐng)參閱圖1)。
您也可以通過“Properties”(屬性)->“FlexTheme”(Flex主題)面板將主題從默認(rèn)Spark主題改為Halo。在“FlexTheme”(Flex主題)面板中,單擊Halo主題。
如果您選擇使用新的Spark主題,請(qǐng)注意許多可用于Halo主題的樣式無法用于Spark主題。Spark主題只支持?jǐn)?shù)量有限的樣式。要了解Spark外觀可以使用哪些樣式,您應(yīng)當(dāng)參閱ASDoc。將為每個(gè)組件列出的各個(gè)樣式指定一個(gè)“主題”。如果未指定主題,表示該樣式既可用于Halo,也可用于Spark主題。Flex4還加入了一種設(shè)計(jì)用于快速模型的線框外觀。線框主題不支持樣式更改。
除了主題更改外,F(xiàn)lex4應(yīng)用程序的默認(rèn)預(yù)下載器也已經(jīng)改為mx.preloaders.SparkDownloadProgressBar。這個(gè)更輕量級(jí)的預(yù)下載器可以縮短一些啟動(dòng)時(shí)間。如果要使用Flex3預(yù)下載器,您只需更改一行代碼。在Application標(biāo)簽中添加以下內(nèi)容:preloader="mx.preloaders.DownloadProgressBar"。
如果要將應(yīng)用程序從Flex3遷移到Flex4,我不建議將各個(gè)Flex3MX組件替換為它們對(duì)應(yīng)的Flex4組件。這樣投入時(shí)間可能并不是一個(gè)好方法。您應(yīng)當(dāng)為新的應(yīng)用程序轉(zhuǎn)而使用Flex4組件架構(gòu)。
◆自動(dòng)庫位置更改
在Flex3中,自動(dòng)庫位于{sdk}/frameworks/libs中,而在Flex4中,它位于{sdk}/frameworks/libs/automation中。用戶應(yīng)當(dāng)確保frameworks/libs中沒有自動(dòng)庫副本。
◆Flex4架構(gòu)變化概述
Flex4SDK的重要主題之一是“用心設(shè)計(jì)”。這個(gè)目標(biāo)涉及在設(shè)計(jì)人員和開發(fā)人員之間創(chuàng)造一個(gè)更順暢的工作流程。為了幫助實(shí)現(xiàn)這一點(diǎn),該框架將組件可視部分與其剩余行為明確劃分開。在Flex3中,組件的代碼包括以其行為、布局和可視變化為中心的邏輯。在Flex4中,組件被劃分為不同的類,各個(gè)類負(fù)責(zé)處理特定的行為。
【編輯推薦】