首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CCLayer UIGestureRecognizer和HUD

CCLayer UIGestureRecognizer和HUD
EN

Stack Overflow用户
提问于 2012-11-16 10:22:01
回答 1查看 401关注 0票数 0

嗨,cocos2d游戏开发人员,我有一个简单的问题

我正在实现一个有两个CCLayers的CCScene,一个是游戏,另一个是HUD,就是这样实现的:

代码语言:javascript
复制
+ (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,如下所示:

代码语言:javascript
复制
- (void)onEnterTransitionDidFinish {
    pinch = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(makePinch:)];
    [[CCDirector sharedDirector].view addGestureRecognizer:pinch];
}

然后我稍后在代码中捕获这些手势,如下所示:

代码语言:javascript
复制
self.scale = pinch.scale;

这是完美的,除了我想要确保只有游戏层拾取手势,而不是HUDLayer。现在触摸HUDLayer的控件并尝试在屏幕上移动角色会导致关卡缩放,这是相当恼人的。

所以我的问题是,如何只分配LevelLayer来获取手势识别器?我想如果我能访问CCLayer的UIView就很容易做到这一点,但似乎我只能访问CCDirector.sharedDirector.view

提前感谢!

EN

回答 1

Stack Overflow用户

发布于 2012-11-16 15:44:12

您无法访问CCLayer的视图,原因很简单:它不存在。所有cocos2d逻辑都是在单个openGL视图中创建的。

要限制手势识别器的区域,可以实现委托方法gestureRecognizerShouldBegin:。在那里你可以检查触摸的位置并返回NO,如果它们在你的平显上,而不是游戏层。

另一种方法是使用cocos2d的CCTouchDispatcher实现您自己的手势识别器。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13409469

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档