触摸长按事件在Corona SDK中的应用

我想知道如何检查用户是否触摸了屏幕,但保持触摸并且没有移动。如果您有任何可以帮助我的东西,请告诉我。我一直在寻找解决方法,但还没有找到适合的。

点赞
用户1870706
用户1870706

你需要为覆盖整个屏幕的对象或运行时系统添加一个触摸监听器。

请参阅此指南:http://docs.coronalabs.com/guide/events/detectEvents/index.html#hit

现在,这些触摸事件有三个 “阶段”。当触摸开始时,你会得到一个 “began” 阶段;当人们移动手指时,你会得到一个 “moved” 阶段;当他们停止触摸时,会有一个 “ended” 阶段。

根据你要做的事情,如果你想在按下按钮时移动某物体,你可以设置一个标志:

if event.phase == "began" then
   pressed = true
elseif event.phase == "ended" then
   pressed = false
end

然后无论你在哪里移动,你都可以检查是否按下了按钮来移动。

2013-05-10 00:49:25
用户2186639
用户2186639
你可以使用/修改这个代码(这是 Rob Miracle 的建议):

local holding = false local function enterFrameListener() if holding then -- 按住按钮 -- 代码在这里 -- 代码在这里 -- 代码在这里 else -- 未按住 -- 代码在这里 -- 代码在这里 -- 代码在这里 end end

local function touchHandler( event ) if event.phase == "began" then display.getCurrentStage():setFocus( event.target ) event.target.isFocus = true Runtime:addEventListener( "enterFrame", enterFrameListener ) holding = true elseif event.target.isFocus then if event.phase == "moved" then elseif event.phase == "ended" then holding = false Runtime:removeEventListener( "enterFrame", enterFrameListener ) display.getCurrentStage():setFocus( nil ) event.target.isFocus = false end end return true end

```

我相信 touchHandler 方法很明显是做什么的 ^^

2013-05-12 16:26:47