cocos2d:ccTouchesBegan未调用,但ccTouchBegan确实触发了

时间:2011-04-28 11:23:23

标签: cocos2d-iphone multi-touch

我想让我的CCLayer子类响应多点触控。在init方法中,我调用

self.isTouchEnabled=YES;

在一个名为registerWithTouchDispatcher的方法中,我调用

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

在我的app委托中,我致电

[glView setMultipleTouchEnabled:YES];

ccTouchBegan:withEvent:方法被调用,但从不调用ccTouchesBegan:withEvent。我对cocos2d很新,所以它可能很简单,我只是无法弄清楚它是什么。

1 个答案:

答案 0 :(得分:6)

在您的课程中添加[[CCTouchDispatcher sharedDispatcher] addStandardDelegate:self priority:0];以接收非目标触摸。

来自cocos2d文档(链接:http://www.cocos2d-iphone.org/api-ref/0.99.0/interface_c_c_touch_dispatcher.html

CCTouchDispatcher。 Singleton处理所有触摸事件。调度程序将事件分派给已注册的TouchHandler。有两种不同类型的触摸处理程序:

标准触控处理器 有针对性的触摸处理程序 标准触摸处理程序的工作方式与CocoaTouch触摸处理程序类似:将一组触摸传递给委托。另一方面,Targeted Touch Handler当时只接受1次触摸,他们可以“吞下”触摸(避免事件的传播)。

首先,调度员将接收到的触摸发送到目标触摸。 Targeted Touch Handlers可以吞下这些触摸。如果仍有剩余的触摸,则剩余的触摸将被发送到标准触摸处理程序。