【问题标题】:cocos2d: ccTouchesBegan not called, but ccTouchBegan does firecocos2d: ccTouchesBegan 没有被调用,但是 ccTouchBegan 确实触发了
【发布时间】:2011-04-28 11:23:23
【问题描述】:

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

self.isTouchEnabled=YES;

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

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

在我的应用委托中,我调用

[glView setMultipleTouchEnabled:YES];

调用 ccTouchBegan:withEvent: 方法,但不会调用 ccTouchesBegan:withEvent。我对 cocos2d 很陌生,所以它可能很简单,我只是不知道它是什么。

【问题讨论】:

  • 愚蠢的问题但是......是否有多次触摸?

标签: cocos2d-iphone multi-touch


【解决方案1】:

在您的班级中添加[[CCTouchDispatcher sharedDispatcher] addStandardDelegate:self priority:0]; 以接收非针对性的触摸。

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

CCTouchDispatcher。处理所有触摸事件的单例。分派器将事件分派给已注册的 TouchHandler。有 2 种不同类型的触摸处理程序:

标准触控处理程序 有针对性的触摸处理程序 标准触摸处理程序的工作方式类似于 CocoaTouch 触摸处理程序:一组触摸被传递给委托。另一方面,Targeted Touch Handlers 只接收一次触摸,它们可以“吞下”触摸(避免传播事件)。

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

【讨论】:

    猜你喜欢
    • 2018-10-25
    • 1970-01-01
    • 1970-01-01
    • 2021-08-05
    • 2011-04-03
    • 1970-01-01
    • 2016-01-28
    • 1970-01-01
    • 2012-12-05
    相关资源
    最近更新 更多