【发布时间】:2012-12-15 17:51:53
【问题描述】:
我正在开发一款游戏,其中有一个角色,我想在触摸屏幕时沿 x 轴移动。我已经做到了,但是我希望对象在触摸屏幕时继续移动,而不仅仅是移动一次。我该怎么做?
【问题讨论】:
我正在开发一款游戏,其中有一个角色,我想在触摸屏幕时沿 x 轴移动。我已经做到了,但是我希望对象在触摸屏幕时继续移动,而不仅仅是移动一次。我该怎么做?
【问题讨论】:
Corona SDK 中的触摸事件仅在发生变化时发生,例如触摸开始、结束或检测到手指移动时。如果您想在按住按钮的同时进行某些操作,则需要一个“enterFrame”事件。
local buttonPressed = false
local function moveCharacter(event)
if buttonPressed then
character.x = characterx + 1
end
end
local function buttonPressed(event)
if event.phase == "began" then
buttonPressed = true
elseif event.phase == "ended" then
buttonPressed = false
end
return true
end
local myButton = display.newRect(0,0,64,48)
myButton:addEventListenr("touch", buttonPressed)
Runtime:addEventListener("enterFrame", moveCharacter)
在这种情况下,enterFrame 侦听器将在看到按钮的状态为被按下时移动角色。现在您可能不想将角色每秒移动一个像素 30 次,因此您需要计算出移动它的分数像素数。然后,您的 buttonPressed 将成为打开标志以使移动功能起作用的一种方式。
【讨论】:
您可以在 Runtime 对象上使用触摸侦听器:
Runtime:addEventListener("touch", buttonPressed)
或者创建一个覆盖整个屏幕的隐形按钮。
【讨论】: