2015-01-10 3 views
0

사용자가 클릭하고 마우스의 현재 위치 좌표를 반환하는 Love2D 엔진을 사용하여 프로그램을 만드는 중입니다. 그러나 다른 위치를 반환하기 전에 사용자는 마우스를 '클릭 해제'한 다음 원하는 다음 위치를 클릭해야합니다.사용자가 마우스를 들고 기다리는 중 - 작동하지 않음 : Love2D

나는이 아래 처리해야 스크립트를 붙여 넣은

:

function scripts.waitForMouseLift() 
    while love.mouse.isDown("l", "r") do 
     --Stays in a loop until user releases mouse, then lets the program continue 
    end 
end 

루프가 마우스 클릭이 해제 될 때 종료 것이기 때문에 기술적으로 작동하지만 대신에 그냥 무한 루프에 전달한다이 이전에 클릭 한 마우스 버튼과 상관없이

제 질문은 두 부분으로 구성됩니다. 첫째,이 방법을 작동시키는 방법이 있습니까? 둘째,이 문제에 대한 대안이나 더 나은 해결책이 있습니까?

+0

무엇을하려하십니까? – ryanpattison

+0

이 절차는 프로그램을 계속 진행하기 전에 사용자가 '클릭 해제'할 때까지 기다릴 필요가있을 때 호출됩니다. 따라서 사용자가 '클릭 해제'할 때까지 루프에 앉아 있어야합니다.이 시점에서 루프를 종료하고 프로그램의 나머지 부분을 계속 실행할 수 있습니다. – cmimm101

답변

4

Love가 콜백을 사용하고 있는데, 찾고있는 사람이 love.mousereleased이고 love.mousepressed을보고 싶을 수도 있습니다. 이들은 스크립트에 추가하는 함수이며, 사용자가 마우스 버튼을 클릭 (또는 해제) 할 때마다 함수가 호출 될 때마다 호출됩니다. 따라서 마우스가 상태를 변경했는지 확인하기 위해 계속 점검 할 필요가 없으며, 마우스 상태를 업데이트 할 수 있도록 Love를 다시 제어해야하므로 바쁜 루프에서 기다릴 수 없습니다.

function love.mousepressed(x, y, button) 
    -- do something with x, y 
    print("Mouse Pressed", button, "at", x, y) 
end 


function love.mousereleased(x, y, button) 
    print("Mouse Released", button, "at", x, y) 
end