Corona SDK:如何使对象移动

我正在开发一个游戏,其中我有一个角色,当屏幕被点击时,我希望角色沿 x 轴移动。我已经成功实现了这一点,但我希望对象只要屏幕被触摸就能持续移动,而不仅仅移动一次。我该怎么做?

点赞
用户1870706
用户1870706

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 函数实际上就是一个打开移动函数的标志的开关。

2012-12-15 18:50:09
用户1870706
用户1870706

你可以在 Runtime 对象上使用触摸侦听器:

Runtime:addEventListener("touch", buttonPressed)

或者创建一个覆盖整个屏幕的不可见按钮。

2012-12-15 19:36:20