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

Tec*_*gle 3 multi-touch cocos2d-iphone

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

self.isTouchEnabled=YES;
Run Code Online (Sandbox Code Playgroud)

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

[[CCTouchDispatcher sharedDispatcher] addTargetedDelegate:self priority:0 swallowsTouches:NO];
Run Code Online (Sandbox Code Playgroud)

在我的应用代表中,我打电话

[glView setMultipleTouchEnabled:YES];
Run Code Online (Sandbox Code Playgroud)

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

zei*_*sen 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触摸处理程序类似:将一组触摸传递给委托.另一方面,目标触摸处理程序当时只接收1次触摸,并且可以"吞咽"触摸(避免事件的传播).

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