这似乎很简单,但我不知道如何监控继续触摸。我想触摸显示器或图像,只要用户没有抬起手指继续旋转图像。这是我的代码片段:
local rotate = function(event)
if event.phase == "began" then
image1.rotation = image1.rotation + 1
end
return true
end
Runtime:addEventListener("touch", rotate)
我希望旋转发生,直到手指从屏幕上抬起。 谢谢你的建议。
答案 0 :(得分:2)
这个怎么样?
local crate = ...
local handle
local function rotate(event)
if event.phase == "began" and handle == nil then
function doRotate()
handle=transition.to(crate,
{delta=true, time=1000, rotation=360, onComplete=doRotate})
end
doRotate()
elseif event.phase == "ended" and handle then
transition.cancel(handle)
handle = nil
end
end
Runtime:addEventListener("touch", rotate)
这样可以更好地控制旋转速度。如果由于某种原因开始丢帧,依赖于enterFrame可能会有问题。
此外,手柄和非手柄的检查是为了适应多点触控。还有其他方法(以及更好的方法)来处理这个问题,但它很方便(如果你不使用多点触控,那就完全不重要了。)
答案 1 :(得分:1)
我最终这样做了。如果你有更好的方法,请发表你的答案!!
local direction = 0
function scene:move()
crate.rotation = crate.rotation + direction
end
Runtime:addEventListener("enterFrame", scene.move)
local function onButtonEvent( event )
if event.phase == "press" then
direction = 1 -- ( -1 to reverse direction )
elseif event.phase == "moved" then
elseif event.phase == "release" then
direction = 0
end
return true
end
local button = widget.newButton{
id = "rotate_button",
label = "Rotate",
font = "HelveticaNeue-Bold",
fontSize = 16,
yOffset = -2,
labelColor = { default={ 65 }, over={ 0 } },
emboss = true,
onEvent = onButtonEvent
}