【问题标题】:Lua & Love2D - Attempting to use a class within a classLua & Love2D - 尝试在类中使用类
【发布时间】:2013-05-12 03:10:48
【问题描述】:

我正在使用 Love2D 游戏引擎在 Lua 中编写程序。我试图在一个类中使用一个类,我知道 Lua 不直接支持类(如果想与主要语言竞争,我认为这是一个疏忽)。如果我只使用我的一个类,那么一切正常,但是当我开始嵌套类时,我遇到了问题。我有 3 个文件,其中包含我的代码和收到的错误,详情如下。

我收到以下信息:

Error
menu.lua:8: attempt to index field 'newBox' (a nil value)
Traceback
menu.lua:8: in function 'create'
main.lua:6: in function 'load'
[C]: in function 'xpcall'

“main.lua”中的代码

require "menu"
require "box"

function love.load()

    newMenu = Menu:create()

end

function love.update(delta)



end

function love.draw()

    newMenu:draw()

end

“menu.lua”中的代码

Menu = {}
Menu.__index = Menu

function Menu:create()
    local menu = {}
    setmetatable(menu, Menu)

    menu.newBox:create(100, 100, 100, 50)

    return menu
end

function Menu:draw()
    self.newBox:draw()
end

“box.lua”中的代码

Box = {}
Box.__index = Box

function Box:create(x, y, width, height)
    local box = {}
    setmetatable(box, Box)

    box.x = x
    box.y = y
    box.width = width
    box.height = height

    return box
end

function Box:draw()
    love.graphics.rectangle("fill", self.x, self.y, self.width, self.height)
end

function Box:getX()
    return self.x
end

function Box:getY()
    return self.y
end

function Box:setX(x)
    self.x = x
end

function Box:setY(y)
    self.y = y
end

【问题讨论】:

    标签: lua love2d


    【解决方案1】:

    您没有为 newBox 字段分配任何内容,因此尝试在它为 nil 时对其进行索引的错误。

    可能将menu.newBox:create(100, 100, 100, 50) 替换为menu.newBox = Box:create(100, 100, 100, 50)

    【讨论】:

    • 哇...我的疏忽了。谢谢!
    猜你喜欢
    • 2014-01-01
    • 1970-01-01
    • 2021-03-11
    • 2015-04-28
    • 2021-08-16
    • 2015-06-01
    • 2014-07-22
    • 2016-04-21
    • 2020-07-29
    相关资源
    最近更新 更多