Flash Web結構之數據顯示層介紹

前面講FlashWeb背景層的時候已經提到了數據顯示層。由於筆者基本不使用組件,所以對筆者來說,數據顯示層主要是指TextField,或者用MC簡單包裝的TextField。它們是網站信息的主體部分,一般都是動態的調用外部信息。當然,由於我用MC進行了包裝,它們也可以作爲按鈕使用,比較常見的就是標題列表,比如我主站上三個子站最新發佈列表。

Flash Web結構之數據顯示層介紹

就像我前面說過的,數據顯示層要儘量的精簡體積,它是一個Flash web瀏覽效率的關鍵,不適合做大量的效果,尤其是位圖效果。而它的結構也要儘量清晰且工整,便於代碼控制。對於Flash模式的網站可以考慮直接將TextField放到_root上;而對於PS模式和混合模式,則最好還是用MC對TextField進行包裝,以保證網站各欄目的獨立性。

淺談數據層

數據層可謂是整個Flash web的中樞神經系統,負責Flash web的所有數據顯示和交換,還有功能的實現,甚至是動畫的控制。

在正式開始講解數據層之前,我想先回顧一下我自己的代碼編寫歷史。最開始的時候,我一般都是直接把代碼寫在元件上,這樣寫的侷限性比較大,很多功能無法實現;後來我開始嘗試在時間軸上寫,可由於當時能力有限,部分代碼還是要寫在元件上,這樣就造成代碼混亂,時間一長,自己也記不清代碼到底寫哪兒;AS能力稍微強點後,我就不再在元件上寫代碼了,而是全部寫在時間軸上,一般都是每個欄目,或者是每個MC包含自己獨自的代碼,這樣做的好處是,代碼分佈比較清晰,而且代碼獨立性比較好。但即便這樣做,還是不夠理想,因爲如果網站MC嵌套結果非常複雜的話,每個MC的代碼都獨自包含,那麼代碼可能會寫在很深層的MC上,而且MC很多話,代碼也將隨之分佈很散,這樣還是不方便代碼的集中管理,也不容易從總體上把握網站數據之間的聯繫。

現在的我怎麼做呢?由於我現在不僅AS已經玩得很熟,而且能夠從宏觀上對網站結構進行比較到位的把握,所以我已經完全有能力根據網站的特點和功能在正式動工之前就把網站劃分爲若干功能模塊,然後用我自創的MC三幀式去完成每個模塊的實現。

打開我網站的源文件,你會發現,除了主時間軸和主時間軸上一系列具有“三幀式”結構的空MC外,其它地方極少有代碼,可以說核心代碼已經完全從網站中分離了出來。在主時間軸上,一般來說第一層是AS層,第二層可有可無的標籤層,第三層就是數據層,全部的“三幀式”MC都放在這一層,最下面的那些層就是網站主框架了。也許你已經忍不住要問了,你老說“三幀式”,到底什麼是“三幀式”啊?問得好,這正是我下面要講的重點。

“數據層MC三幀式”是我爲了方便數據管理而自創出來的一種有效的數據組織框架,它巧妙的利用了時間軸,具有清晰的結構,而且還具有通用性。從字面意思,我們便可以猜出來,它是具有三個空白關鍵幀的影片剪輯,這三個幀的名字按在時間軸上的先後順序依次爲“chuShi”、“shuaXin”、“gongNeng”。

“chuShi”幀:這一幀負責系統的初始化,主要分兩部分,第一部分一般都是一大串變量。這些變量又分爲三種,第一種是所有這個MC要操作的對象和其它元件接口;第二種是一些系統初始變量,比如將負責留言顯示的頁碼變量初始爲1,就可以讓留言初始爲顯示第一頁;最後還有一個比較特殊的布爾變量,就是“yiJiaZai”,我們把它的值初始爲false,表明此MC內控制的`外部數據此時還未進行過加載,一旦這個MC控制下的數據加載成功,我們立刻將其值變爲true。這樣做的好處是可以根據此值判斷數據是否是第一次加載,然後進行不同的設置和響應。第二部分則是註冊刷新函數,有經驗的動態Flash web開發者都應該知道,Flash中的數據刷新是重點,這也是Flash web較常規網頁的最大優勢之一。在這裏,我們需要註冊倆個負責數據刷新的函數:

function chuShi(){gotoAndPlay("chuShi");}

function shuaXin(){play();}

稍後我會解釋爲什麼。

“shuaXin”幀:這個幀是個空白關鍵幀,什麼都沒有,它的意義也將在下面解釋。

“gongNeng”幀:這幀主要負責各種功能的實現以及數據的呈現,爲了方便對整個網站的控制以及各“三幀式MC”之間的相互控制,我建議把比較重要的功能都寫成函數。在“gongNeng”幀代碼的最後一定要加上一句gotoAndStop("shuaXin")。這幀中還有一個重頭戲就是錯誤分析和處理,但爲了緊扣文章中心,這裏就不多講了。

這樣以來我們就建立起一套簡單有效的數據控制機制。首先在_root上將所有的“三幀式MC”都stop到第一幀,也就是“chuShi”幀,然後建立一套數據加載機制,通過控制三幀式MC的播放來控制數據加載順序。數據加載完成後,我們就可以在任何地方通過控制三幀式MC來控制這個MC負責的網站某特定部分。比如有個名字爲“lieBiao_mc”的三幀式MC是負責網站文章標題列表這部分的功能,我們就可以通過下面極其簡單的代碼來實現對文章列表的控制:

如果我們要得到文章列表的初始狀態,只需要調用:_iao_hi();

如果我們要得到文章列表的某特定狀態,只需要對負責此狀態的變量賦值,然後調用:_iao_Xin();

如果我們只需要調用文章列表中的某一項功能,只需要調用:_iao_mc.特定功能函數名();

由於我們在“gongNeng”幀中就有錯誤分析、過渡動畫等這些重複性內容,所以當調用shuaXin函數時,這些內容就會自動觸發,非常簡單好用。

數據層MC三幀式就簡單介紹到這裏,具體細節其實非常豐富,這裏只是拋磚引玉。