在 Corona 中如何区分点击和长按?

在 Corona 中如何区分单击和长按?我希望在单击时跳转到下一个场景,而在长按时显示一些数据(当用户按住该按钮时),并不要跳转到下一个场景。如何实现这一点?

点赞
用户2895078
用户2895078

你可以通过创建两个事件处理程序来实现:

  • 一个用于 tap 事件以移动到下一个场景
  • 一个用于 touch 事件以显示一些数据。在 touch 事件处理程序中,有一个条件检查事件的当前阶段,以便在“began”阶段显示数据,在“ended”阶段隐藏数据

示例:

function object:touch( event )
    if event.phase == "began" then
       -- 显示数据
    elseif event.phase == "ended" or event.phase == "cancelled" then
       -- 隐藏数据
    end
    return true
end

关于 touch 事件的详细信息: http://docs.coronalabs.com/api/event/touch/phase.html

2014-10-29 12:28:20
用户869951
用户869951

这实际上比较棘手,因为「触摸处理程序」只能在用户触摸超过一定时间后才显示数据。但是,如果用户在触摸期间不移动手指,则“开始”和“结束”阶段之间不会调用事件处理程序,因此您没有机会使数据可见。

因此,在“开始”阶段您必须启动一个计时器,并使用回调到一个“使数据可见”的函数。在“结束”阶段,您取消计时器,以便如果触摸时间不足,数据显示回调将不会被调用。此外,在此阶段您将数据可见性设置为 false,以确保无论计时器如何,一旦放开触摸,数据都不再可见。

我可以在获取桌面访问权限后展示一些代码。

2014-10-29 23:50:36