没有事件处理的触摸检测
Posted
技术标签:
【中文标题】没有事件处理的触摸检测【英文标题】:Touch detection without event processing 【发布时间】:2012-03-07 05:40:14 【问题描述】:我正在使用 cocos2d。我希望能够检测屏幕是否在特定时刻被触摸——也就是说,我想检测特定时刻是否存在触摸,而不是在事件发生时拦截它。
原因是我正在为精灵设置动画并且想要确定精灵是否应该继续移动 - 如果屏幕仍然被触摸。我不能使用 ccTouchesEnded 因为每次动画开始时我都将 isTouchEnabled 设置为 false 因为我还希望用户能够在屏幕上快速点击以移动精灵,但如果他们点击得太快,它会弄乱精灵的位置在动画过程中 - 我发现我的对象的位置以奇怪的方式搞砸了。
这可能吗?
【问题讨论】:
【参考方案1】:除了在主 UI 运行循环中启用和接收这些事件之外,似乎没有任何公共 API 来检测触摸。
您可以继续处理事件,并在模型对象或全局变量中设置上次触摸事件留下的状态。然后,您可以随时轮询您的应用自己的内部状态。
如果事件时间戳太接近某个动画开始时间,您可以让您的触摸处理程序不要做不适当的事情,而不是禁用触摸。
【讨论】:
我尝试过使用计时器来处理动画的同步,但我发现不可能完全正确地计时。我还为“处理”和“动画”使用了几个全局变量,我告诉触摸处理程序在处理(重复触摸)或动画(触摸并按住)时不要采取行动,但不知何故它似乎不太有效.我会更仔细地研究这个逻辑并发布另一个问题。谢谢。以上是关于没有事件处理的触摸检测的主要内容,如果未能解决你的问题,请参考以下文章