【发布时间】:2012-11-16 02:22:01
【问题描述】:
各位 cocos2d 游戏开发者,我有一个简单的问题
我正在实现一个 CCScene,上面有两个 CCLayer,一个是游戏,另一个是 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
提前谢谢!
【问题讨论】:
标签: cocos2d-iphone zooming hud