0

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

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

layer.touchEnabled = NO;

我稍后尝试使用相同的属性来扭转这一点

layer.touchEnabled = YES;

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

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

4

2 回答 2

0

您必须再次给调度员委托,这可能会对您有所帮助

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

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

}
于 2014-02-24T13:56:02.713 回答
0

解决。

事实证明,在将初始 touchEnabled 设置为 YES 之前,我需要在我的层的初始化程序中将 touchMode 设置为 kCCTouchesOneByOne。否则,错误的调度程序被安装在 CCLayer 中并且把事情搞砸了。我需要将吞咽触摸设置为“是”的那个。

layer.touchMode = kCCTouchesOneByOne;
layer.touchEnabled = YES;
于 2014-02-27T07:37:46.383 回答