【问题标题】:love2D Error: Bad argument #2 to 'rectangle' (number expected, got nil)love2D 错误:“矩形”的参数 #2 错误(预期数字,为零)
【发布时间】:2016-11-05 15:20:49
【问题描述】:

我不知道我做错了什么...我在 player.draw() 函数中遇到错误。它谈论的不好的论点是在 love.graphics.rectangle() 方法中。这是说 v.x 是一个不好的论点。但它应该工作。 v.x 和 v.y 都应该工作。因为它访问表或数组中元素的字段对吗?有人可以告诉我我做错了什么以及如何解决这个问题吗?非常感谢!这是我的代码:

require "scripts.player"

width = love.graphics.getWidth()

block = {}
block.width = 60
block.height = 10
block.speed = 150
block.timer = 0
block.timerLim = math.random(1,2)
block.spawnX = math.random(0, width - player.width)

function block.spawn(x,y)
    table.insert(block, {x = x, y = y})
end

function block.move(dt)
    for i,v in ipairs(block) do
        v.y = v.y + block.speed * dt
    end
end

function block.draw()
    for i,v in ipairs(block) do 
        love.graphics.setColor(255,0,255)
        love.graphics.rectangle("fill", v.x, v.y, block.width block.height)
    end
end

function block.spawnHandler(dt)
    block.timer = block.timer + dt
    if block.timer > block.timerLim then
        block.spawn(spawnX, -10)
        block.timer = 0
        block.timerLim = math.random(1,2)
        block.spawnX = math.random(0, width - block.width)
    end
end

-- Parent Functions --

function DRAW_BLOCK()
    block.draw()
end

function UPDATE_BLOCK(dt)
    block.move(dt)
    block.spawnHandler(dt)
end

【问题讨论】:

    标签: arrays lua arguments love2d


    【解决方案1】:

    在函数block.spawnHandler 中,您的意思是block.spawnX 而不是spawnX

    由于 spawnX 不存在,它的值为 nil,它进入 spawn 函数并被设置为坐标的 x 值,然后进入 rectangle 并且是错误的参数。

    你可以在这里阅读更多关于它以及如何防止它再次咬你的信息:https://www.lua.org/pil/13.4.1.html

    简而言之,lua 真的很奇怪,直到你通过访问不存在的变量来“修复”它,而不是返回 nil,以及大约 800 种类似的东西。一旦你“修复”了所有这些东西,你就有了一些奇怪的东西,不再完全是 lua。

    【讨论】:

      猜你喜欢
      • 2021-07-22
      • 1970-01-01
      • 2017-04-08
      • 1970-01-01
      • 1970-01-01
      • 2018-12-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多