喜同胞的cocos2d遊戲開發者,我有一個簡單的問題CCLayer UIGestureRecognizer和HUD
我採取的是上有兩個CCLayers一個CCScene,一個是遊戲,另一種是HUD實現爲這樣:
+ (CCScene *)scene {
CCScene *scene = [CCScene node];
LevelLayer *layer = [LevelLayer node];
LevelHUDLayer *hud = [LevelHUDLayer node];
layer = [layer init];
[layer setHUDLayer:hud];
[hud setParentLevel:layer];
[scene addChild:hud z:HUD_ZLevel];
[scene addChild:layer];
return scene;
}
而且效果很好。我也有一個UIPinchGestureRecognizer我實現像這樣:
- (void)onEnterTransitionDidFinish {
pinch = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(makePinch:)];
[[CCDirector sharedDirector].view addGestureRecognizer:pinch];
}
然後我趕上手勢以後的代碼如下所示:
self.scale = pinch.scale;
這完美的作品除了我想,以確保只有遊戲層拿起手勢,而不是HUDLayer。現在觸摸HUDLayer的控件並嘗試在屏幕上移動角色導致該級別縮放,這非常煩人。
所以我的問題是如何分配只有LevelLayer拿起手勢識別器?我認爲如果可以訪問CCLayer的UIView,這很容易,但看起來好像我只能訪問CCDirector.sharedDirector.view
非常感謝!
感謝您的輸入,我現在正在嘗試gestureRecognizerShouldBegin方式,但我想知道如何檢查子圖層是否已收到輸入。這是非常重要的,因爲HUD控件具有透明的部分,允許觸摸傳播 – Parad0x13