【问题标题】:Multitouch Cocos2d TouchesBegan Individual vs Sets of touches多点触控 Cocos2d TouchesBegan 单点触控与多点触控
【发布时间】:2012-09-20 23:16:52
【问题描述】:

我正在设计一个应用程序,但我们在多点触控点按和多点触控点点延迟方面遇到了一些问题(这会导致对 TouchesBegan 的 2 次单独调用)。

我们遇到的问题是当玩家同时用两根手指点击时:

有时它可以通过 touches.count = 2 注册为 NSSet

有时,如果玩家在第二次触摸时稍微晚了一点,它就会注册两次对 CCTouchesBegan 的调用,每次调用 touches.count = 1。

用 touches.count = 2 注册两个 TouchesBegan 调用以及当玩家在第二次触摸时稍晚(两次调用 TouchesBegan)用相同的回调注册两个 TouchesBegan 调用的最简单方法是什么?

我最初的想法是获取[事件时间戳]并将其与之前的时间戳进行比较,然后检查它是否在某个时间间隔内......

最好的方法是什么?

【问题讨论】:

    标签: objective-c ios cocos2d-iphone multi-touch touchesbegan


    【解决方案1】:

    您不需要时间戳比较。除了使用 touches NSSet 对象,您还可以利用 event 来检索触摸。

    - (void) ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
    {
        if( [[event allTouches] count] == 2 )
        {
            // Do your thing here
        }
    }
    

    注意:如果您用两根手指轻按,会稍有延迟,ccTouchesBegan 将被调用两次,但在第二次调用时,事件 对象将有两次触摸。

    【讨论】:

    • 嘿,谢谢 Sohaib!那么,对于第 2 次 TouchesBegan 调用,事件对象报告 1 次触摸计数需要多长时间?
    • 我刚刚对其进行了测试,似乎事件捆绑是基于当第二根手指按下时你的第一根手指是否按下?这是正确的吗?
    • 是的,没错。您是否尝试通过两次触摸来捕捉双击?
    • 基本上我们正在尝试为播放器设置故障保护,因此如果他们草率地执行多点触控(两次轻按或第一根手指按住触摸然后第二根手指稍微延迟触摸)它仍然会算作多点触控。
    猜你喜欢
    • 1970-01-01
    • 2011-02-14
    • 1970-01-01
    • 2010-12-18
    • 2023-04-03
    • 1970-01-01
    • 2011-03-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多