我正忙着使用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 :(得分: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