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

在我的 Corona 游戏中,我有一个摇杆图形放置在屏幕的角落里。

当用户触摸摇杆并从一侧拖动时,它会移动角色。然而,如果用户从摇杆中间拖到一侧,然后将手指移开,则角色会继续移动。即使触摸松开不再在摇杆图形上,我也希望角色在触摸松开时停止移动。

摇杆图像使用 control:addEventListener("touch", onTouch) 订阅“触摸”事件监听器。

下面是摇杆代码:

-- 常量
local playerSpeed = 300
local playerDamping = 15

-- 玩家控制
local onTouch = function (event)

    -- 玩家旋转
    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))

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

有什么好的建议吗?谢谢!

原文链接 https://stackoverflow.com/questions/7215880

点赞
stackoverflow用户746890
stackoverflow用户746890

将以下内容添加到 onTouch 函数体中,并保留原始的 markdown 格式:

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

这将订阅“触摸结束”事件,即使用户的手指不在操纵杆上。

2011-08-30 02:38:09