嗨,cocos2d游戏开发人员,我有一个简单的问题
我正在实现一个有两个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
提前感谢!
发布于 2012-11-16 15:44:12
您无法访问CCLayer的视图,原因很简单:它不存在。所有cocos2d逻辑都是在单个openGL视图中创建的。
要限制手势识别器的区域,可以实现委托方法gestureRecognizerShouldBegin:。在那里你可以检查触摸的位置并返回NO,如果它们在你的平显上,而不是游戏层。
另一种方法是使用cocos2d的CCTouchDispatcher实现您自己的手势识别器。
https://stackoverflow.com/questions/13409469
复制相似问题