displayobjectcontainer 類是可用作顯示列表中顯示物件容器的所有物件的基類。作為容器類,我們使用as3的時候,接觸太多了,隨便都要寫addchild 或者removechild方法操作我們的顯示物件。對於這個容器類,你認識多少?我不一定可以給乙個滿意的答案給你,但是我們可以交流一起討論完成對這個容器類的理解。
容器簡單來講,就是裝東西的器皿。在生活中,用它裝水,裝湯等例子。在as3裡面同樣有著同樣的功能,displayobjectcontainer 類不能例項化,我們不需要進行對它進行例項化,才呼叫它的方法,對於容器這種概念,在as3裡面是乙個非常重要的概念。容器裡面,可以裝載我們的顯示物件,習慣使用addchild 或者使用addchildat,這樣我們乙個個例項物件就可以新增到容器裡面了。建立容器後,是否就不需要我們去管理呢?對於容器這種管理方式,這是乙個很值得去研究的話題。計算機有乙個很重要的資料結構------樹。這個與我們有什麼關係呢? 答案很簡單,採用樹這儲存結構,顯得更加健壯。
一,樹的結構
樹結構 有根節點,有子節點,另外說法,爸爸下有兒子。
我們看一下,addchild,在繼承了sprite類的時候,使用這方法新增了乙個物件
public class example extends sprite
}
}
圖裡面簡單說c 有a和b,而a和b分別包含了1-4.
問題:addchild 物件的時候,有先後順序嗎?
這裡不回答,嘗試一下
addchild(a) addchild(b)
addchild(b) addchild(a)
區別在那裡?
二,索引表
新增容器後,在容器裡面的物件是有索引的,有順序的。刪除某乙個物件後,索引表會發生相應的改變。在這個容器內裡面我為它定義這乙個概念。使用索引表的時候,這樣對我們搜素節點和理清容器內部關係有很大幫助。新增乙個物件後,索引表就會建立起來,他所在的索引就為0,再增加乙個就會變成1.numchildren數目會變成2。(可以看上面的圖)
三、新增節點
看到上面樹的結構,可以想像出樹的形態的千之百態,一棵樹怎麼可以沒有葉子呢?他是是不每年春天才可以長出葉子呢?事實上,很多情況樹冬眠後,會發芽。但是在as3裡面,新增節點就僅僅使用addchild(顯示物件) 或者addchildat 兩個常見的方法就可以實現為樹新增子葉。是不是覺得很方便呢?可以去嘗試一下,但是問題是,是不是所有的物件都適合新增到
容器當中呢?這就要看addchild 裝的是神還是鬼。addchild 所在的引數裡面,很顯然就要需要繼續displayobject的子物件,不然嘗試去新增乙個bitmapdata物件的,看看能否實現?
新增節點後,索引表就是建立起來。進行對節點刪除,或者查詢的時候,就要好好利用這個索引關係。
三,容器內搜尋節點
容器是乙個顯示物件管理者,它具備新增,刪除,修改,查詢等功能。
查詢的功能是容器類乙個很有趣的地方,之所以有趣,我們可以想象一下,在樹上尋找一片葉子那樣。我們如同乙個會爬樹的猴子 ,
樹葉的數目有限,因此可具搜尋性。通過迴圈,我們可以搜尋到我們想要的葉子。
容器類裡面恰好提供了這個幫助。如getchildat getchildbyname
getchildindex
等方法幫助我們搜素到節點的位置,以後其他一些資訊,索引等等。
四,刪除節點
容器裡面擁有管理物件的能力。如果我希望刪除某乙個節點,那麼就可以通過
removechild()
removechildat()
兩個常用的方法來刪除。問題是由誰來負責刪除任務?呼叫者是誰?這樣是常見乙個問題。呼叫者的職責就是刪除某乙個節點,自然我們想到由容器本身執行。看上面的圖,c是根節點,a和b 都是他的子節點,如果我想刪除a ,那麼呼叫者自然是c(也就是說父節點),爸爸要刪除兒子,c.removechild(a),因為a和b都是c的一部分分支。
同理 刪除和a和b的裡面的節點,同樣可以使用到這種理解的方式進行刪除。
這種常見的方式。
結果是建立起一種樹型的結構
每天學一點Flash(55) 認識類的結構
內容 類庫是封裝了各種方法和屬性,我們的工作只需要好好利用這些類庫。類庫是乙個龐大的工具,彷彿是乙個藝術家,flash能夠實現各種效果都是基於這些功能強大的類庫,這個對美好充滿期待的藝術家。因此認識類庫結構有助於我們了解flash奇妙的世界。flash類庫 分為了控制項包,事件包,網路包,包,資料報...
每天學一點Flash(55) 認識類的結構
內容 類庫是封裝了各種方法和屬性,我們的工作只需要好好利用這些類庫。類庫是乙個龐大的工具,彷彿是乙個藝術家,flash能夠實現各種效果都是基於這些功能強大的類庫,這個對美好充滿期待的藝術家。因此認識類庫結構有助於我們了解flash奇妙的世界。flash類庫 分為了控制項包,事件包,網路包,包,資料報...
每天學一點(一)
記錄學習內容 js中對於函式的建立,在使用函式表示式和函式宣告相結合時,正確寫法為 var sum function sum a,b console.log sum 1,2 輸出3 若定義的變數和函式名稱書寫不一致,則會產生錯誤。var sum1 function sum2 a,b console....