Corona 中的触摸事件何时有“取消”阶段?

Posted

技术标签:

【中文标题】Corona 中的触摸事件何时有“取消”阶段?【英文标题】:When does the touch event in Corona have a "cancelled" phase? 【发布时间】:2012-05-24 06:34:34 【问题描述】:

Corona 中的触摸事件有 4 个阶段:“开始”、“移动”、“结束”和“取消”。事件何时收到“取消”阶段? (我没有找到可以用它取消事件的函数,你可以删除监听器)。 以及如何在应用程序中使用“已取消”事件阶段?

【问题讨论】:

【参考方案1】:

Corona SDK 是 iosandroid 之上的抽象层;大多数设计决策都会反映在底层平台上。

触摸事件似乎实现了 UITouch 对象(以及 Android 上的任何等效对象)。在 Google 中搜索“iphone uitouch cancelled”会得到this question,这应该会回答您的问题。

如果您需要手动“取消”事件,只需将标志存储在关联对象中(或在触摸事件中,如果它是一个简单的表格)并在调用“移动”或“结束”时检查它。

(免责声明:我从未使用过 Corona,也没有为移动平台开发过。)

【讨论】:

【参考方案2】:

基本上,如果您拿着一个对象、按钮等,并且您将手指滑开而不是松开它,这将被注册为“已取消”,您可以随心所欲地进行操作,通常与“结束”相同

例子:

if event.phase == "began" then --Pressing the button
   move = true
elseif event.phase == "canceled" then --sliding your finger off
   move = false
elseif event.phase == "ended" then --Releasing the button
   move = false
end

【讨论】:

"通常和'end'一样",不同意。在您的示例中,这是真的,但使用它的最常见的事情之一是跟踪对对象的点击。在这种情况下,通常最好忽略该事件

以上是关于Corona 中的触摸事件何时有“取消”阶段?的主要内容,如果未能解决你的问题,请参考以下文章

如何避免 Touches 取消事件?

在 UIButton 上实现触摸取消

取消其他视图的触摸事件

SpriteKit 帧周期中何时调用触摸事件?

触摸移动卡住 忽略取消触摸移动的尝试

你可以在 touchesBegan 之后强制取消触摸事件吗?