2012-07-20 25 views
1

我有兩個CCMenu實例。在遊戲的某個時候,菜單A與菜單B重疊。但是,當我按下菜單B中的某個按鈕時,「獲取它」的菜單是菜單A.如何優先觸摸我的CCMenu?

如何將觸摸優先級設置爲CCMenu B ?

我嘗試這樣做:

[[CCTouchDispatcher sharedDispatcher] setPriority:-130 forDelegate:menuB]; 

然而,Xcode中說,這代表(menuB)沒有被發現。

回答

2

好菜單還沒有inited,我解決了這個問題,但我仍然認爲應該有一個更好的辦法。

首先,我們要編輯CCMenu的界面。我們必須創建一個新的整數屬性。

@interface CCMenu : CCLayer <CCRGBAProtocol> 
{ 
    tCCMenuState state_; 
    CCMenuItem *selectedItem_; 
    GLubyte  opacity_; 
    ccColor3B color_; 

    int extraTouchPriority; // Our new integer 
} 

@property (readwrite) int extraTouchPriority; 

現在改變registerWithTouchDispatcher方法是:

-(void) registerWithTouchDispatcher 
{ 
    [[CCTouchDispatcher sharedDispatcher] addTargetedDelegate:self priority:kCCMenuTouchPriority - extraTouchPriority swallowsTouches:YES]; 
} 

完成。現在,當您必須爲您的CCMenu實例提供比其他優先級更高的優先級時,只需在初始化之後爲其提供更高的extraTouchPriority值。

0

我有同樣的問題。我所做的是從cocos2d庫複製整個CCMenu,重命名它,然後將kCCMenuTouchPriority修改爲我想要的。請注意,您必須重命名kCCMenuTouchPriority才能使用自定義菜單。我用kkCCMenuTouchPriority

我把它叫做在這樣的代碼:

CCMenuPopUp *menu =[CCMenuPopUp menuWithItems:item1,nil]; 

我試圖繼承它,但我遇到了一些問題,放棄了與上述解決方案了。

的CCTouchDispatcher東西不起作用,因爲當你把它