没有事件处理的触摸检测

Posted

技术标签:

【中文标题】没有事件处理的触摸检测【英文标题】:Touch detection without event processing 【发布时间】:2012-03-07 05:40:14 【问题描述】:

我正在使用 cocos2d。我希望能够检测屏幕是否在特定时刻被触摸——也就是说,我想检测特定时刻是否存在触摸,而不是在事件发生时拦截它。

原因是我正在为精灵设置动画并且想要确定精灵是否应该继续移动 - 如果屏幕仍然被触摸。我不能使用 ccTouchesEnded 因为每次动画开始时我都将 isTouchEnabled 设置为 false 因为我还希望用户能够在屏幕上快速点击以移动精灵,但如果他们点击得太快,它会弄乱精灵的位置在动画过程中 - 我发现我的对象的位置以奇怪的方式搞砸了。

这可能吗?

【问题讨论】:

【参考方案1】:

除了在主 UI 运行循环中启用和接收这些事件之外,似乎没有任何公共 API 来检测触摸。

您可以继续处理事件,并在模型对象或全局变量中设置上次触摸事件留下的状态。然后,您可以随时轮询您的应用自己的内部状态。

如果事件时间戳太接近某个动画开始时间,您可以让您的触摸处理程序不要做不适当的事情,而不是禁用触摸。

【讨论】:

我尝试过使用计时器来处理动画的同步,但我发现不可能完全正确地计时。我还为“处理”和“动画”使用了几个全局变量,我告诉触摸处理程序在处理(重复触摸)或动画(触摸并按住)时不要采取行动,但不知何故它似乎不太有效.我会更仔细地研究这个逻辑并发布另一个问题。谢谢。

以上是关于没有事件处理的触摸检测的主要内容,如果未能解决你的问题,请参考以下文章

iOS触摸事件处理详解

处理触摸屏上的悬停事件[关闭]

IOS 触摸事件的处理

Touchesbegin没有检测到被触摸的东西

UITextField 事件处理

事件处理