【问题标题】:Corona SDK: How to make an object moveCorona SDK:如何使物体移动
【发布时间】:2012-12-15 17:51:53
【问题描述】:

我正在开发一款游戏,其中有一个角色,我想在触摸屏幕时沿 x 轴移动。我已经做到了,但是我希望对象在触摸屏幕时继续移动,而不仅仅是移动一次。我该怎么做?

【问题讨论】:

    标签: sdk lua coronasdk


    【解决方案1】:

    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 将成为打开标志以使移动功能起作用的一种方式。

    【讨论】:

    • 我真的不想加一个按钮,我认为它们很浪费空间,难道没有其他办法吗?我已经研究过使用翻译,但角色只是飞离了屏幕。
    • 添加一个覆盖整个屏幕的隐形按钮:
    • 如果我这样做了,我只能向一个方向移动角色
    【解决方案2】:

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

    Runtime:addEventListener("touch", buttonPressed)
    

    或者创建一个覆盖整个屏幕的隐形按钮。

    【讨论】:

    • 正如我所说,通过这样做,在触摸屏幕时角色不会继续移动。
    • 您仍然需要 enterFrame 才能使用它。触摸只是打开一个标志,enterFrame 需要知道是否移动角色。
    • enterFrame 事件似乎没有在任何时候触发
    • 我的意思是 moveCharacter 事件
    猜你喜欢
    • 2011-12-04
    • 2012-07-05
    • 2021-07-10
    • 2017-05-21
    • 2016-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多