Corona SDK:点按并触摸+故障

时间:2014-05-03 22:59:18

标签: lua corona

local held = false

local function jumperTap ()

    jumper:applyForce( 0, 200, jumper.x, jumper.y )
    return false

end

Runtime:addEventListener( "tap", jumperTap )


local function holdListener(event)

    held = true
    jumper:applyForce( 0, 250, jumper.x, jumper.y  )
    return true

end




local function jumperTouch(event)

    if (event.phase == "began") then
        display.getCurrentStage():setFocus(jumper)
        holdTimer = timer.performWithDelay( 500, holdListener )
    elseif (event.phase == "moved") then
        timer.cancel(holdTimer)
    elseif (event.phase == "ended" or event.phase == "cancelled") then
        display.getCurrentStage():setFocus(nil)
        timer.cancel(holdTimer)
        held = false
    end

end

Runtime:addEventListener( "touch", jumperTouch )

我正试图点击并触摸并按住。当触摸和保持发生时,跳线将施加更多的力,因此当触摸并保持屏幕时他可以跳得更高。点击屏幕后,他的跳跃时间会缩短。

当我点击时,预期的事情发生了。当我点击并按住时,预期的事情发生了。由于我在Corona的新手,我确实有一些明显的问题。他们是......

- 当我点击并按住时,一切顺利,但是当我发布时,它会出现故障并且执行的操作似乎是点击事件。不确定为什么会发生这种情况

- 当我执行点击事件时,我可以在对象空中时再次执行它 - 这会将他带到地面并且点击事件似乎再次表演,但力度较小。

非常感谢任何和所有帮助!

编辑:我把return返回true并返回false只是为了尝试不同的东西,但它并没有影响任何东西。

1 个答案:

答案 0 :(得分:0)

我建议测试去抖动,以防止点击/点击+保持事件加倍。通过将函数传递给全局布尔值,您可以使它们只能在没有敲击事件发生时点击。因为根据您的活动,无论他们目前是否正在跳跃,他们似乎都会发生这种情况。模式与否。

示例:

debounce = false

function func1()
   if debounce == false then
      debounce = true
      //event script
   end
end

function event_ended()
   debounce = false
end