WebGame中UI的層次管理

當一個遊戲逐漸變得龐大的時候,裏面的UI層次也會隨着變得越來越深
面相應的,由於Flash中存在一個Z序的概念,也就是說在XY的基礎上還有一個Z深度,暫且稱爲深度好了
而一個可視對象的深度值會帶來這樣的作用,當一個對象容器Container.addChild(childA, childB, childC),這個時候,A在最底層,B在A上面,C在B上面
只要當B有一部分遮住了A,那那一部分就只能看見B的那部分,而A是看不見的,這個應該很好理解
 
有了上面的概念,於是對於層次的引用有有些必要了,因爲Flash中的對象是層層嵌套,A包含B,B包含C,C包含D等,但是凡是越後面addChild進容器的,就會在擋在前面的上面
打個比方,A.addChild(B);B.addChild(C);A.addChild(D);
那麼D一定在C的上面。
 
人工的定義一些Layer類,主要做用僅僅只是一個容器而已,但是可以把你想要放的東西都放在相應的Layer裏面,這樣一個層次就出來了,層層之間是不會有交叉的,深度越高的永遠是遮擋在深度低的上面。
 
比如我們現在的項目中,在MainGame下面定義了這樣幾個Layer
LoaderBarLayer --此類是加載條的層,加載條層是最上層的,也就是說當加載的時候會擋住所有的UI
PopupBoxLayer --此類是彈出框的層,彈出框屬於模態對話框,也就是隻有把對話框關掉纔可以進行其他操作,所以此層在加載條層的下面
TipLayer --此類是浮動提示框的層,浮動提示框用於對某一些Button或者是MC進行綁定,當鼠標移動到相應的元件的時候就會出現一個浮動提示框
CurorLayer --此類是鼠標特效層,用於表現一些鼠標特效,比如當鼠標點地圖上一個可走區域的時候會表現一種點擊的特效,還有射擊,水槍等
LoginLayer --此類是登陸層,主要是包含了登陸界面,至於爲什麼要給登陸單獨加一層,原因就是爲了速度和垃圾回收,登陸的時候只加載登陸需要的東西,當登陸完後才加載主遊戲層,而且登陸過後此層也會被垃圾回收
MainGameLayer --此類是主遊戲層,此層相當於一個容器,位於該層下面又有其他層,具體如下
MapLayer --此類是地圖層,主要用於包含及顯示地圖,包含的只是地圖這個靜態的背景而已
SortableLayer(暫定名) --此類是可排序層,所謂的可排序層是指這個層中的所有東西都有一個共同的父親,但是它們的深度卻是時刻變化的,這是因爲場景中人物走動的時候會有這樣的需求,當A的Y座標比B的更大的時候,那麼A應該遮在B的上面,反之亦然,這樣纔會有場景的效果,讓玩家感覺更自然
FaceLayer --此類是主界面層,包括了主界面的那些按鈕,聊天框等等
WindowLayer --此類是窗口層,當點擊FaceLayer上面的那些按鈕的時候就會彈出相應的窗口到WindowLayer,用WindowLayer統一管理。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章