【问题标题】:Detect long press in Cocos2d 3.0在 Cocos2d 3.0 中检测长按
【发布时间】:2014-04-04 11:55:15
【问题描述】:

我想在我的游戏中检测长按触摸,但问题是Cocos2d 3.0 中的CCTargetedTouchDelegate 不再存在以实现其delegates。我该怎么做?

【问题讨论】:

  • @LearnCocos2D,可能值得避免使用 3.0 进行标记,以阻止其使用,正如所讨论的 here
  • 我同意 2.x 标签,但不同意 3.0,它与 2.x 及更早版本相差太大。例如,大多数类名都已更改,即使给出简短的 cocos2d 2.x 代码示例的答案也很可能不适用于 3.x,反之亦然。此外,这个问题显然是在询问有关此特定事物如何与 v3.0 一起使用的建议,因此即使根据 Jeff 的定义,该标记在这里也是有效的。 ;)
  • @JamesWebster 哦,我看到您从至少 20 多个问题中删除了 v3 标签。你能撤消标签删除吗?我将此标签添加到 cocos2d 问题中,特别是因为 v3 与早期版本有很大不同。与 cocos2d-3.x 相同。虽然您可以删除 2.x 标签,但不会有任何损失。
  • 嗯。好吧,你肯定让我重新思考,但是我现在已经删除了 all 的标签。然而,实际上我编辑的所有问题都在标题和/或问题中提到了版本号。这不是让它工作的好方法吗?否则,随着新版本的软件/库/等的发布,我们最终会得到一个稀释标签的列表。

标签: ios iphone cocos2d-iphone


【解决方案1】:

CCTargetedTouchDelegate 仍然存在,但已重命名为CCTouchOneByOneDelegate(这只对 2.1+ 有效)

触摸控制似乎已移至CCResponder。它似乎期望您继承它并覆盖触摸方法,而不是委托:

– touchBegan:withEvent:
– touchMoved:withEvent:
– touchEnded:withEvent:
– touchCancelled:withEvent:

但是对于长按,我可能仍会使用UILongPressGestureRecognizer

【讨论】:

    【解决方案2】:

    http://www.cocos2d-x.org/attachments/1782/XTLayer.zip 下载此文件。它实现了不同的手势

    void xtTapGesture(CCPoint position) {}
    virtual void xtDoubleTapGesture(CCPoint position) {}
    virtual void xtLongTapGesture(CCPoint position) {}
    virtual void xtSwipeGesture(XTTouchDirection direction, float distance, float speed) {}
    

    您在头文件中扩展 cclayer .. 将其替换为 XTLayer 并将所有触摸事件替换为 xt 而不是 cc。

    您可以在http://www.cocos2d-x.org/forums/6/topics/23011获得更多详细信息

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多