Corona SDK: 触摸事件

如何检测屏幕是否被触摸?在我看来,当手指接触屏幕但未移动时,似乎不会产生触摸事件。

原文链接 https://stackoverflow.com/questions/9141086

点赞
stackoverflow用户909233
stackoverflow用户909233

是的,只记录对手指移动的 变化。放下手指、抬起手指和拖动手指都会触发事件。

2012-02-09 01:06:12
stackoverflow用户2376388
stackoverflow用户2376388

然而,在你的事件函数中,你可以这样做

e.phase == "began"

这将在用户将手指放在屏幕上时触发。

2013-05-13 14:26:29
stackoverflow用户1609914
stackoverflow用户1609914

触摸事件被处理分为几个阶段。因此,由触摸生成的事件有“began”、“moved”、“ended”和“cancelled”这些阶段。你可以通过这种方式进行检测:

self.isTouched = false;

function defaultTouchHandler(e)
    if(e.phase == "began") then
        print("Tapped")
        self.isTouched = true;
        --用户触摸了屏幕(不移动)。在这里执行“onMouseDown”操作
    elseif(e.phase == "moved") then
        print("Moved")
        --用户在触摸屏幕时移动手指。在这里执行“onMouseMoved”操作
    elseif(e.phase == "cancelled" or e.phase == "ended") then
        print("End of touch")
        self.isTouched = false;
        --用户抬起手指,或发生中断。在这里执行“onMouseUp”操作
    end
end

self:addEventListener("touch", defaultTouchHandler)

当你需要检查屏幕是否被触摸时,只需进行以下操作:

if(isTouched) then
    --屏幕被触摸
else
    --屏幕未被触摸
end

编辑:显然,你可以在“addEventListener”行中更改“self”,以监听任何你想要监听触摸事件的对象。

2013-12-30 16:52:57
stackoverflow用户6235061
stackoverflow用户6235061
本地对象 = 显示.新图片("球.png")
本地对象.id = "球对象"

局部函数 onObjectTouch(事件)
如果 事件.phase == "began" 则
    打印("触摸事件开始在:" .. 事件.target.id)
否则 如果 事件.phase == "ended" 则
    打印("触摸事件结束在:" .. 事件.target.id)
结束
返回 true
结束
本地对象:添加事件监听器("触摸", onObjectTouch)
2016-10-02 11:11:13