如何在Corona SDK中检测TouchOut事件?

时间:2011-08-27 16:41:53

标签: sdk lua touch corona

我的Corona游戏中有一个操纵杆图形放在屏幕的一角。

当用户触摸操纵杆并将其从一侧拉到另一侧时,它会移动角色。但是,如果用户将从操纵杆的中间一直拖到侧面,然后移开他/她的手指,角色就会继续移动。我希望角色在触摸时停止,即使操纵杆图形上不再有补漆。

操纵杆图像使用control:addEventListener( "touch", onTouch )订阅“触摸”收听者。

以下操纵杆代码:

-- Constants
local playerSpeed = 300
local playerDamping = 15

-- Player controls
local onTouch = function( event )

    -- Player rotation
    local deltaX = event.x - control.x
    local deltaY = event.y - control.y
    local magnitude = math.sqrt( deltaX * deltaX + deltaY * deltaY )

    player.rotation = math.deg( math.atan2 ( deltaY, deltaX ) )

    -- Player speed
    if event.phase == "ended" then
        player.linearDamping = playerDamping
    else
        player.linearDamping = 0
        player:setLinearVelocity( deltaX / magnitude * playerSpeed, deltaY / magnitude * playerSpeed )
    end
end

有什么想法吗?谢谢!

1 个答案:

答案 0 :(得分:5)

添加:

if event.phase == "began" then
    display.getCurrentStage():setFocus( control, event.id )
end

onTouch函数的主体,订阅'触摸结束'事件,即使用户的手指不在操纵杆上也是如此。