cocos2d如何防止多点触摸传播到以前的图层?

时间:2012-05-03 17:35:37

标签: cocos2d-iphone multi-touch cclayer

我正在通过一个包含每个可触摸精灵的类来处理这些触摸。此外,每个菜单都是CCLayer,当我从一个菜单更改为另一个菜单时,我使用CCTransition###并获取新场景。

因此,图层“仍在那里”,当我触摸一个菜单时,前一层也会收到它...就像我以新的CCLayer开始游戏一样,然后菜单仍然受到影响多点触摸...

如果我使用单点触控,我可以吞下触摸,但游戏必须有多点触控......

我该怎么办?谢谢大家!

3 个答案:

答案 0 :(得分:1)

您需要在任何需要它的图层中使用触摸事件。在图层消耗它之后,触摸将不再传播到“先前”图层。

http://www.cocos2d-iphone.org/api-ref/0.9.0-beta/_c_c_touch_delegate_protocol_8h_source.html

要使用触摸事件,请在ccTouchBegan委托方法中返回YES。

编辑:更改了方法名称以匹配CCStandardTouchDelegate

- (BOOL)ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event;
   if (condition)
      return YES;
   else 
      return NO;
}

答案 1 :(得分:1)

您可以将顶层的优先级设置为0,将下层的优先级设置为1,如下所示。

[[CCTouchDispatcher sharedDispatcher] addTargetedDelegate:self priority:0 swallowsTouches:YES];

答案 2 :(得分:0)

您可以尝试使用该属性

self.isTouchEnabled = NO;

在图层中,您不希望接收到触摸。

如果您使用CCButton个对象,则需要禁用它们。

我希望它有所帮助...

问候安塞姆