VJ最近刻了一個人物頭像的小元件,裡面包含淡入淡出和遮罩功能,也因此終於搞懂GroupContainer這兩個物件的相差之處和使用的時機點。
首先,官網的解釋在這但是有解釋跟沒解釋一樣,我整理以下幾個重點給各位:

1.Group是一個群組(廢話)
2.Container是一個容器(也是廢話)
3.Group和Container最大的差異點在於Container可以指定大小,而Group是隨著塞入的物件會改變大小
4.Container有包含遮罩功能(最多三個)
5.Group + Mask = Container

以上就是這兩個物件最大的差異性,那麼使用時機點該如何分別呢?

1.當畫面中的某個區塊是需要放入很多元件,並且沒有限制範圍,你對物件擺放位置沒有極限值,使用Group,反之則用Container。
2.當畫面中你有一組數量很多的元件需要移動,並且到某個極限範圍就要遮住讓他消失,就使用Container。

掌握上面這兩元件的差異性,還有想要做的效果,就能判斷該用哪一個元件。
以下用程式碼來看這兩元件的差別。
使用Group:

local grp = display.newGroup( )
local obj1 = display.newRect( 100, 100, 75, 75 )
local obj2 = display.newRect( 130, 130, 30, 30 )
obj1:setFillColor(1,0,0)
print('before insert obj1')
print(grp.width)
print(grp.height)
grp:insert(obj1)
print('after insert obj1')
print(grp.width)
print(grp.height)
print('after insert obj2')
grp:insert(obj2)
print(grp.width)
print(grp.height)


可以發現一開始,Group的大小皆為0,在連續塞入兩個物件之後,長寬改變成75,在改變成82.5。
兩個物件的顯示完全不受到任何影響。

使用Container:

當使用Container的時候,一開始創造的當下就要給長寬的初始值,之後也可以動態修改,然而它的長寬完全不受到塞入元件的影響,依然故我的沒有任何變化。
如果將
local cont = display.newContainer( 300, 300),
改成local cont = display.newContainer( 150,150)
(白線是我加上去,代表Container所顯示的範圍)

這時候因為長寬不夠顯示obj1+obj2大小顯示位置,所以這時候出現了遮罩的效果,只露出了obj1一點點的小頭

以上就是兩個元件的差別的介紹,有機會再說說一開始影片中的元件是如何製成的。


發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *

Related Posts

Corona sdk 實作

CORONA SDK 音樂播放

使用可樂的好處就是比一般的遊戲引擎還快上手,一是不需要做太多設定,二是 Read more…

Corona sdk 實作

Corona SDK影格動畫(2)

因為工作的關係,很久很久沒有更新網誌了,目前卡牌部分已經暫停下來,在此 Read more…

Corona sdk 實作

Corona SDK 跳動的數字

以上,就是本次教學,謝謝大家。     &nbsp Read more…