love2d lua中的鼠标按下错误
Posted
技术标签:
【中文标题】love2d lua中的鼠标按下错误【英文标题】:Mouse press bug in love2d lua 【发布时间】:2021-12-21 20:56:52 【问题描述】:下面是我的一个不言自明的love2d程序示例。变量“状态”决定了游戏的状态,即“游戏”和“菜单”。初始状态是“菜单”,这里预期发生的情况是,当第一次右键单击时,状态变为“播放”,然后在第二次右键单击时,变量 printMsg 设置为 true,结果显示一条消息打印在函数love.draw()
内。
function love.load()
state = 'menu'
end
function love.draw()
if printMsg == true then
love.graphics.print('mousepressed')
end
end
function love.mousepressed(x, y, button)
if state == 'menu' and button == 1 then
state = 'play'
end
if state == 'play' and button == 1 then
printMsg = true
end
end
我有两个问题:
在第一次单击时会打印消息,因为程序倾向于认为第一次单击也是第二次单击。
无需创建变量printMsg
来实际打印消息,我想在按下按钮的实例上打印消息。我的意思是:
function love.load()
state = 'menu'
end
function love.draw()
end
function love.mousepressed(x, y, button)
if state == 'menu' and button == 1 then
state = 'play'
end
if state == 'play' and button == 1 then
love.graphics.print('mousepressed')
end
end
但不幸的是,这不会打印任何内容。
感谢任何答案。
【问题讨论】:
文本应该显示多长时间?如果我第三次点击会发生什么? 只要 state='play',文本就会显示。第三次点击没有动作。 Does this answer help you out at all? 谢谢,但这是一个完全不同的话题 那么在你的原始代码中使用elseif
就可以了。
【参考方案1】:
您输入了第二个 if 语句,因为您将 'play'
分配给了 state
。因此第二个 if 语句的条件为真。
如果只发生其中一件事情:
if state == 'menu' and button == 1 then
state = 'play'
elseif state == 'play' and button == 1 then
love.graphics.print('mousepressed')
end
或
if button == 1 then
if state == 'menu' then
state = 'play'
elseif state == 'play' then
love.graphics.print('mousepressed')
end
end
或者如果你只能有这两个选项,你可以省略其中一个条件:
if button == 1 then
if state == 'menu' then
state = 'play'
else
love.graphics.print('mousepressed')
end
end
请注意,此打印不会产生任何输出。默认情况下,Love2d 会在调用 love.draw 之前清除屏幕。因此,您在 love.draw 之外打印的任何内容都不会被考虑在内。
要么只在 love.draw 中绘制,要么通过实现自己的 love.run 来避免清除帧缓冲区。
【讨论】:
这不会打印消息 查看编辑。你应该花更多的时间在手册上。确保您了解爱情游戏的运作方式和执行方式。【参考方案2】:文本的标准颜色是:黑色
背景的标准颜色是:黑色
我想因此它是打印出来的,但你看不到它。
在love.draw()
中的love.graphics.print()
之前尝试love.graphics.setColor(1, 1, 1, 1)
。
(在每个可绘制对象之前)
看:https://love2d.org/wiki/love.graphics.setColor
【讨论】:
以上是关于love2d lua中的鼠标按下错误的主要内容,如果未能解决你的问题,请参考以下文章