我正忙着使用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
这在技术上应该有效,因为当鼠标单击被抬起时,循环将结束,但相反,无论我之前单击哪个鼠标按钮,它都会无限循环。
所以,我的问题由两部分组成:首先,有没有办法让这种方法起作用?其次,这个问题是否有其他选择或更好的解决方案?
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