¿Cómo detecto un evento TouchOut en Corona SDK?

Tengo un gráfico de joystick colocado en la esquina de la pantalla en mi juego Corona.

Cuando el usuario toca el joystick y lo arrastra de un lado a otro, mueve al personaje. Sin embargo, si el usuario arrastra desde el centro del joystick hasta el costado, luego quita su dedo, el personaje sigue moviéndose. Me gustaría que el personaje se detuviera en el retoque, incluso si el retoque ya no está en el gráfico del joystick.

La imagen del joystick se suscribe al oyente "táctil" con control:addEventListener( "touch", onTouch ).

Código de joystick a continuación:

-- 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

¿Algunas ideas? ¡Gracias!

preguntado el 27 de agosto de 11 a las 16:08

1 Respuestas

Añadir:

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

al cuerpo del onTouch función, para suscribirse al evento 'toque finalizado', incluso cuando el dedo del usuario no está en el joystick.

Respondido 30 ago 11, 06:08

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.