Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Lua 卢阿;Love2D-尝试在类中使用类_Lua_Love2d - Fatal编程技术网

Lua 卢阿;Love2D-尝试在类中使用类

Lua 卢阿;Love2D-尝试在类中使用类,lua,love2d,Lua,Love2d,我正在使用Love2D游戏引擎用Lua编写一个程序。我试图在一个类中使用一个类,我理解Lua并不直接支持类(我认为如果想要与主要语言竞争,这是一个疏忽)。如果我只使用一个类,那么一切都正常,但当我开始嵌套类时,我会遇到问题。我有3个文件包含我的代码和错误,我收到的所有详细信息如下 我收到以下消息: Error menu.lua:8: attempt to index field 'newBox' (a nil value) Traceback menu.lua:8: in function 'c

我正在使用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”中的代码

“menu.lua”中的代码

“box.lua”中的代码


您没有将任何内容分配给
newBox
字段,因此当它为
nil
时尝试对其进行索引时会出现错误


可能会将
菜单替换为
菜单。newBox:create(10010050)
。newBox=Box:create(10010010050)
您没有为
newBox
字段分配任何内容,因此在
为零时尝试为其编制索引时出错


可能会用
菜单替换
菜单。newBox:create(10010050)
。newBox=Box:create(10010050)

哇。。。我这方面真是疏忽。非常感谢。哇!我这方面真是疏忽。非常感谢。
require "menu"
require "box"

function love.load()

    newMenu = Menu:create()

end

function love.update(delta)



end

function love.draw()

    newMenu:draw()

end
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 = {}
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