怎麼設定z-index呢?或者碰到元件被另一個元件蓋住時,到底是怎麼個原因呢?
也許有人會跟我有一樣的做法和碰到一樣的問題:
我的元件都用Layer(圖層)排得好好的,
可是我要控制元件的隱藏與顯示時(MovieClip.visible=false或MovieClip.visible=true),
元件的順序竟然跑掉,原本在上方的元件反而跑到下方了!!!
如果跟我一樣是用visible來切換元件可視度的人,
先別急著上網查z-index或addChild這些做法~
先說說z-index是怎麼做的:
http://stackoverflow.com/questions/16637956/as3-manipulating-z-index-dynamically
也就是利用
setChildIndex(MovieClip, i);
來修改元件的順序。
i就是你要被擋住(z-index比較小的)那個元件順序(索引)。
網上還有用addChild這種作法,
這種最不推薦!
然而卻是很簡單的方法。
因為你用了addChild(你的元件名稱)後,你的元件會重新加到佈景中,
因此達到讓你要的元件放在最上面的效果。
然而!
缺點就是它有可能真的多加了你的元件一次!
這樣就可能導致有兩個以上已經被設定好一樣name的元件出現在場景中,
那麼很容易導致出錯。
假如你切換場景時(比方從Scene 1 gotoAndPlay 到 Scene 2),
就容易造成畫面出錯~(就類似於很多程式裡面對於元件的name或id重複的結果)
那麼現在要教的方法很簡單,
基本上都不需要以上的作法。
你要做的就是清楚明白你的元件的前後順序,
然後!
依照最後面顯示到最前面顯示來寫程式就可以了!
比方我有個元件名字叫obj1,另一個元件名字叫obj2。
obj1會在obj2的前面,
因此當我要顯示這兩個元件時,
只要這樣寫:
obj2.visible=true;
obj1.visible=true;
就這麼簡單!
若你的情況是obj1在obj2後面,
那麼就是相反:
obj1.visible=true;
obj2.visible=true;
所以類似FIFO的概念~(先進後出)
如此一來,你再也不用擔心改變visible=true時,你的元件顯示的效果不如你想要的了!
缺點就是你要很清楚元件的順序而已~
是的,這篇有教跟沒教一樣!
同樣的,如果你是用動態產生元件,
addChild時,也依照哪個要放最前面的擺到最下面來寫,
也是一樣的道理喔!