“退出”读为零字段?

时间:2015-10-22 18:40:25

标签: lua love2d

我正为我的游戏制作一个菜单文件,并且不能将“退出”称为字段。它总是返回零。谁能告诉我为什么会这样?注意,它在代码中较早声明,而其他按钮功能确实有效。谢谢!

function love.mousepressed( x, y, button )
  if button == "l" then
    for k, v in pairs(buttons) do
      local ins = insideBox( x, y, v.x - (v.w/2), v.y - (v.h/2), v.w, v.h)

      if ins then
        if v.action == "play" then
          loadState("game")
        end
      end
      if ins then
        if v.action == "quit" then
          love.event.quit()
        end
      end
    end
  end
end

1 个答案:

答案 0 :(得分:0)

为什么playquit绑定到同一个按钮? o.O

此外,无需检查ins两次。重复的代码应该是一个红色标记:

  if ins then
    if v.action == "play" then
      loadState("game")
    end
  end
  if ins then
    if v.action == "quit" then
      love.event.quit()
    end
  end

那可能是:

  if ins then
    if v.action == "play" then
      loadState("game")
    elseif v.action == "quit" then
      love.event.quit()
    end
  end

但是如果没有使用调试器,这就是你如何追踪这些问题:

1。在项目文件夹中创建名为conf.lua的文件。

2. 至少包含这么多内容,将控制台附加到您的应用中:

function love.conf(t)
    t.console = true  -- Attach a console (Windows only)
end

3. 将调试输出添加到mousepressed功能,以便查看正在发生的事情。

首先在应用执行的早期将其定义在此处。方便的打印功能:

 function printf(...) print(string.format(...)) end

然后在函数中添加一些调试内容:

 function love.mousepressed(x, y, button)
     print('mouse button %d pressed at %d, %d', button, x, y)
     if button == "l" then
         printf('checking %d buttons', #buttons)
         for k, v in pairs(buttons) do
             local ins = insideBox( x, y, v.x - (v.w/2), v.y - (v.h/2), v.w, v.h)
             printf('%d, %d is%sinside button %s (%d, %d, %d, %d)',
                 ins and ' ' or ' not ', k, x, y, v.x, v.y, v.w, v.h)
             if ins then
                 print('executing action', v.action)
                 if v.action == "play" then
                     loadState("game")
                 elseif v.action == "quit" then
                     love.event.quit()
                 end
             end
         end
     end
 end

您还应该使用有意义的变量名称。 v可以是button。什么是k?一个指数?然后可能是iindex。这是名字吗?然后是name。等等等等。 k什么也没告诉我们。