2012-08-11 89 views
0

我是怎樣的一個UI的buff - 在我的遊戲的每一個「屏幕」,當它出現或消失應該轉換輸入/輸出。因爲我的遊戲在資源方面很簡單,所以我認爲我只是讓每個「屏幕」都是一個CCLayer,併爲轉換定義一個函數,將所有內容都留在內存中。事實證明,這比我預想的要複雜得多。何時使用CCScene與CCLayer?

我想我現在所擁有的兩個主要問題:

1)每一個「屏幕」是一個CCLayer。這看起來很好,但我似乎無法停止接收觸摸事件,即使它們處於非活動狀態。子小精靈似乎並不尊重isTouchEnabled屬性,所以我一直在打不可見的按鈕。

2)我寫了一個自定義按鈕,基本上是與各國的幾個獨立的紋理精靈。它使用CCTargetedTouchDelegate協議。我認爲這是上述問題的重要組成部分。

我不是在CCMenu東西很清楚。有沒有更好地解釋其設計目的以及如何使用它的教程或文檔? cocos2d的文檔根本不會談論每個類的功能,這使得正確使用該庫變得非常困難。另外,我應該何時使用場景而不是圖層?我可以編寫自定義轉換嗎?

+2

場景僅僅是在節點層次中最頂層節點。除了這個要求,它也可以是一個CCNode。同樣,如果您不需要內置的觸摸支持,則可以使用CCScene而不是CCLayer。 – LearnCocos2D 2012-08-11 10:04:14

回答

0

使用CCScenes進行菜單更方便。所有非活動CCScene的孩子都不會收到觸摸事件,因此您不必管理該行爲。 CCScenes也有內置的轉換像淡入淡出,但如果你像我一樣,你可能只是想運行操作,使場景轉換出來,然後調用CCDirector:replaceScene。

0

我發現,如果你有在菜單單個場景多層,如主菜單(簡單有負載的遊戲,新遊戲等不是整個場景層),如果你添加的所有你的按鈕作爲圖層的子項;然後阻止它們接收觸摸,只需在不使用時將圖層移出屏幕即可。下面是一個例子。

[loadLayer setPosition:CGPointMake(-1000,-1000)]; 
[settingsLayer setPosition:CGPointMake(-1000,-1000)]; 
[menuLayer setPosition:CGPointMake(0,0)]; 

而且每次你​​選擇一個按鈕,你會說負載遊戲層只是爲了正確的圖層扭轉它。

[loadLayer setPosition:CGPointMake(0,0)]; 
[settingsLayer setPosition:CGPointMake(-1000,-1000)]; 
[menuLayer setPosition:CGPointMake(-1000,-1000)];