我有一個完整的畫布CCLayer,上面有幾個微小的CCLayer - 它們是按鈕。上的按鍵我能觸摸聽者:Cocos2D觸摸事件在每個(無關的)偵聽器中被觸發
- (id)init {
if ((self = [super init])) {
[self setTouchEnabled:YES];
}
return self;
}
首先,我嘗試了默認的觸摸處理程序:
- (void)ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
NSLog(@"This is me: %d", self->button_id);
}
奇怪的結果是,無論我撫摸它總是會觸發所有按鈕的觸摸處理程序,即使我碰在一個乾淨的地方,什麼都不應該叫。
我正在閱讀有關文檔和博客,但似乎沒有什麼直接的解決方案。我也試過單次觸摸處理程序中加入:
- (void)onEnterTransitionDidFinish {
[CCDirector sharedDirector].touchDispatcher addTargetedDelegate:self priority:1 swallowsTouches:YES];
}
- (void)onExit {
[[CCDirector sharedDirector].touchDispatcher removeDelegate:self];
}
- (BOOL)ccTouchBegan:(UITouch *)touch withEvent:(UIEvent *)event {
NSLog(@"This is me: %d", self->button_id);
}
這種情況下,唯一的區別是,我只拿到了1監聽器觸發 - 總是我定義了一個最後的 - 又一次,無論觸摸發生的位置。
在我看來,問題不是事件委託,而是CCLayer邊界。這是我如何設置大小:
self.contentSize = CGSizeMake(10.0f, 10.0f);
你有什麼想法,我錯了嗎?也許我錯過了一些必要的
謝謝!