寫在前面的話:AS3.0,從大的架構來看,大緻可以歸納為三塊内容:基礎程式、顯示程式設計、網絡互動。基礎程式這塊,和其他的程式語言有較大的相通之處,是其他程式員最容易上手的部分,也是Flash的骨架;顯示程式設計這塊,是Flash獨有的特色,控制了Flash的一切外觀表現,是Flash的樣貌;而網絡互動,屬于Flash的進階功能,是連接配接不同使用者之間的橋梁,是Flash的内涵。
這一篇,我将為大家介紹有關顯示程式設計的知識。下面我們通過比對,AS2.0和AS3.0在顯示程式設計上的差別,來了解顯示程式設計的基礎概念。
<b>一、顯示對象類的分離</b>
在AS2.0裡,可以說,影片剪輯(MovieClip)是所有對象的元始天尊,因為所有對象的類都基于他。但是這樣一來,就顯得非常臃腫。即使我們隻需要一個簡單的矢量方塊,卻不得不繼承影片剪輯的所有屬性和方法,比如時間軸、幀頻等。
在AS3.0裡,把顯示對象類分離開,很好的優化了該系統。顯示對象的樹狀結構圖如下:
<a href="http://windtoto.blog.51cto.com/attachment/201010/7/1986737_12864336411JGD.png"></a>
基類(DisplayObject)包含了顯示對象最基本的屬性和方法,其他各個對象都是該類的子類,并且有各自特定的屬性和方法。比如我們要建立一個矢量圖形,就隻需要建立一個Shape類就可以,這樣比建立一個MovieClip類,要節約大量的記憶體空間和資源,有效的提高性能。
其中,我說明一下Sprite對象,該對象是AS2.0不具備的。我也不知道怎麼翻譯好,就直接稱之為Sprite對象了。該對象和MovieClip對象的唯一差別是,該對象不包含時間軸相關的屬性和方法。是以如果你需要建立一個隻有一幀的影片剪輯,應當使用Sprite對象來節約資源,提高性能。
<b>二、顯示對象的展現管理</b>
在AS2.0中,隻要建立一個顯示對象,該對象即是可見的(即使在舞台外,也是可見的,隻是因為舞台的限制沒有展現出來)。這樣的話,即使有暫時不需要的顯示對象,也同樣需要占用處理時間來呈現。
而在AS3.0中,建立的顯示對象,平時是不可見的,也不會占用處理時間來呈現。隻有調用了addChild()等方法,将該顯示對象添加進顯示清單後,該對象才會呈現。這個也是AS3.0的一個重要的改變。
需要說明的是,直接用繪圖工具在舞台上建立的對象,當建立完成後,會自動加入顯示清單并展現,這個AS2.0和AS3.0是一樣的。
<b>三、改進了深度管理</b>
在AS2.0中,采用線性深度管理的方法(Depth)。由于該方法存在斷層,即不需要保持連貫性。是以給管理或者周遊都造成了相當大的麻煩。
在AS3.0中,給所有的顯示對象都建立的索引清單,當你添加或者删除一個顯示對象時,程式都會自動的更新該清單,是以可以友善的實作管理和周遊。(具體的方法下文會介紹)
在AS2.0裡,并不是所有的顯示對象都可以用程式語言通路,比如矢量形狀。而在AS3.0中,可以通路顯示清單中的所有對象。通俗的說,隻要你能夠看得到的東西,都可以用程式來進行控制。
本文轉自 windtoto 51CTO部落格,原文連結:http://blog.51cto.com/windtoto/401870,如需轉載請自行聯系原作者