資源描述:
《理解Flex3的組件和框架的生命周期》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、理解Flex3的組件和框架的生命周期(一)AdobeFlex框架的SDK美中不足之處就是部分由良好的半黑盒子系統(tǒng)所創(chuàng)建;這就是說,在大多數(shù)情況下,我們這些開發(fā)者在項(xiàng)目周期中沒有時(shí)間或精力去真正地深入到未知領(lǐng)域。從技術(shù)上來講,F(xiàn)lex框架的不是一個(gè)黑盒子,你可以閱讀和查看它的所有源碼。由于代碼的復(fù)雜性及它是如何設(shè)計(jì)的,我們往往把框架看成是如何輸入、得到什么樣的輸出。大多數(shù)開發(fā)人員,包括作者,往往在工作中學(xué)習(xí)Flex,通過驗(yàn)證、試驗(yàn)、研究或按照他人寫的博客提到的觀點(diǎn)來尋找新的技巧和技術(shù)。Adobe已經(jīng)做了非常了不起的工作是Flex框架的文檔,它已被
2、細(xì)分為兩大類:用戶指南和API(ASDoc)文檔。然而,即使他們有大量的文檔,用戶指南和API文檔之間的還是有一個(gè)很大的差距。用戶向?qū)Шw了一系列的課題,從如何開始到使用比較復(fù)雜的功能;但都停止在這些不很復(fù)雜的功能上,比如:樣式擴(kuò)展的技巧,元數(shù)據(jù)可以做和不可以做的,當(dāng)然也包括Flex框架和組件生命周期。有很高層次的概述,但這些都在用戶能弄明白的能力范圍之外。從API文檔中我們可以推斷出很多功能和命令,有時(shí)它們是引導(dǎo)我們,但也有時(shí)關(guān)于一些信息會戲弄我們。通常,API文檔假定你知道要查找的東西,它們只是解釋一下如何去做;但不會告訴你何時(shí)或?yàn)槭裁慈ビ?/p>
3、它們。由于這種宏觀的指導(dǎo)與微觀的API之間的差距,優(yōu)化開發(fā)成為了一個(gè)黑色藝術(shù),需要程序員通過多年的經(jīng)驗(yàn)在試驗(yàn)和錯(cuò)誤中確定最佳的做法。加上這些與Flex只有5年左右的歷史,它從最初的表現(xiàn)進(jìn)化到了引人注目的階段,而我們大多處于技術(shù)的初級階段。然而,作為第三方的開發(fā)者,并不是唯一留在外面的。多數(shù)Adobe的工程師也沒有完全了解框架的細(xì)微部分。詹姆斯參加了Adobe2008年MAX會議關(guān)于Flex組件的介紹和Deepa論壇關(guān)于Flex的生命周期評價(jià)。她的報(bào)告一半是關(guān)于生命周期,甚至其中一半是關(guān)于在當(dāng)前Flex3的生命周期,其余的是關(guān)于Flex4的變化。
4、隨著她在高層次的深入概述,提到近期一個(gè)Flex架構(gòu)師使她最終通過了整個(gè)生命周期。她對觀眾說希望能早點(diǎn)了解這些信息,這樣能使她能成為一個(gè)更好的工程師。我們的觀點(diǎn)是Flex迷惑了我們許多人,甚至一些最受尊敬的工程師。這是一個(gè)復(fù)雜的系統(tǒng)設(shè)計(jì)得非常強(qiáng)大,易擴(kuò)展,靈活。然而,這種靈活性推展和實(shí)現(xiàn)創(chuàng)造了許多可能性。這些可能性很多都不是最好的開發(fā)方式,甚至有可能不利于整體性能,穩(wěn)定性和可擴(kuò)展性的應(yīng)用前景。本文的目的是嘗試照耀到整個(gè)生命周期,使我們一些啟示,作為一個(gè)開發(fā)社區(qū),用Flex能創(chuàng)造更好的應(yīng)用程序和組件。值得提醒的是,以下信息大部分是從閱讀源代碼推斷的
5、,一些是好的文檔,也有一些不是。如果你看到一些不太正確的,或許可以用一個(gè)更好的解決方式,歡迎隨時(shí)聯(lián)絡(luò)DevelopmentArc我們(info@developmentarc.com),以便我們盡可能添加/更新此文檔,使之在技術(shù)上正確的。如何閱讀在整本書中我們所涉及許多的Flex框架源碼,但為了簡潔,我們不總是顯示所指的代碼。當(dāng)你閱讀這本書時(shí),要求你打開FlexBuilder,或能夠訪問Flex3框架的源碼,跟隨著我們所討論源碼是怎么工作及為什么這樣做。如果你跟著閱讀源碼,請注意,我們經(jīng)常跳過功能或者具體的代碼,以便我們可以對應(yīng)當(dāng)前的主題。這樣能
6、防止我們遠(yuǎn)離當(dāng)前的主題,主要是講解代碼的微妙之處。這并不是說那些代碼的作用不重要,而是那些代碼處理特別的案例,防止?jié)撛诘腻e(cuò)誤或在生命周期的后面來處理,只是我們當(dāng)前沒有討論它。Flex簡史在我們進(jìn)入Flex框架細(xì)枝末節(jié)及如何利用它的討論之前,我們應(yīng)該退一步,看看整體的Flex大局,為什么我們要使用它。許多讀者也許已有相關(guān)的Flex經(jīng)驗(yàn),也許你有很多的開發(fā)經(jīng)驗(yàn);但是為了了解Flex小組的決定,我們有必要去看一看Flex和FlashPlayer的歷史。這一點(diǎn)很重要,因?yàn)镕lex框架的許多部分對FlashPlayer相當(dāng)較低。都是關(guān)于幀從根本上講,F(xiàn)l
7、ex就是Flash.在DevelopemntArc,當(dāng)我們坐下教授初級開發(fā)者或客戶時(shí),關(guān)于Flex我們都會繼續(xù)重復(fù)這一點(diǎn)。因?yàn)镕lex最終生成的SWF文件和AdobeFlashProfessional工具開發(fā)生成的一樣。這就意味著,F(xiàn)lex和任何FlashSWF都是一樣地遵守相同的規(guī)定。一個(gè)最根本的規(guī)則就是所有的SWF文件都要轉(zhuǎn)換成以Flash為基礎(chǔ)框架。對于那些不熟悉Flash歷史的人來說,玩家的最初目標(biāo)就是創(chuàng)建動畫。傳統(tǒng)的動畫是以細(xì)胞為基礎(chǔ),你畫的圖像在某個(gè)細(xì)胞被稍微修改的圖像的細(xì)胞所替換,它在一定的速度下,看起來像有運(yùn)動的變化。所以,F(xiàn)l
8、ash使用frame創(chuàng)建相同的動畫效果來代替細(xì)胞。幀依然存在,所有的邏輯和屏幕的渲染依賴于幀改變和幀率定義的大小。幀率告訴Flash每秒多少幀應(yīng)該嘗試