在cocos2d中重新启用图层上的触摸检测

时间:2014-02-24 11:36:57

标签: ios objective-c cocos2d-iphone cocos2d-iphone-2.x

我正在使用cocos2d 2.1版本在iOS上编写一个简单的棋盘游戏。该逻辑要求在预定义的时间段内禁用各个层上的触摸检测。虽然在各个层上禁用触摸检测功能很好但是我在重新启用触摸检测时遇到了很多问题。

我使用touchEnabled属性禁用触摸检测

layer.touchEnabled = NO;

我稍后尝试使用相同的属性来反转它

layer.touchEnabled = YES;

但这似乎根本不起作用,没有一个点击事件再传播到图层..

我在这里做错了什么?有什么我想念的吗?

2 个答案:

答案 0 :(得分:0)

你必须再次给调度员代表,这可能会帮助你

-(void)touchActive
{
    if (self.touchEnabled)
    {
        return;
    }

    [[[CCDirector sharedDirector] touchDispatcher] addTargetedDelegate:self
                                                          priority:0
                                                   swallowsTouches:YES];
    self.touchEnabled = YES;

}

答案 1 :(得分:0)

解决。

事实证明,在将初始touchEnabled设置为YES之前,我需要在我的图层的初始值设定项中将touchMode设置为kCCTouchesOneByOne。否则,错误的调度程序将被安装在CCLayer中并且正在搞乱。我需要将吞咽触摸设置为YES的那个。

layer.touchMode = kCCTouchesOneByOne;
layer.touchEnabled = YES;