等待用户抬起鼠标 - 不工作:Love2D

时间:2015-01-10 00:19:32

标签: lua mouseevent mouse 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

这应该在技术上有效,因为当鼠标点击被提升时循环将结束,而是它只是在无限循环中继续,无论我之前点击了哪个鼠标按钮。

所以,我的问题包括两个部分:首先,是否有办法使这种方法有效?其次,有没有替代方案或更好的解决方案来解决这个问题?

1 个答案:

答案 0 :(得分: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