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中的鼠标按下错误的主要内容,如果未能解决你的问题,请参考以下文章

简单的lua脚本/鼠标宏

Love2D(Lua)中的面向对象编程

lua (love2d): 函数应该没有结束

love2d(lua)中的碰撞检测

for 循环是不是遍历 Lua 和 Love2d 中的空表?

如何在 Lua (Love2D) 的库中定义一个类?