目前,我正在尝试学习如何使用Love2D框架制作视频游戏。一个教程建议使用rxi的 "经典 "库来采用OOP。
目前,我正在尝试创建一个 shape.lua
文件,它描述了一个一般的形状(无论是圆形、矩形还是三角形)。这是我的基类,我将用它来派生一个描述矩形的子类,叫做 rectangle.lua
. 该 shape.lua
文件只会在这些矩形在屏幕上移动时处理其子类的移动。
然而,每当我尝试运行这个文件时,这个错误就会持续存在。main.lua
文件。
Error
rectangle.lua:16: attempt to index global 'Shape' (a nil value)
Traceback
rectangle.lua:16: in main chunk
[C]: in function 'require'
main.lua:3: in function 'load'
[C]: in function 'xpcall'
[C]: in function 'xpcall'
下面是我的 main.lua
文件。
function love.load()
Object = require "classic"
require "rectangle"
require "shape"
require "circle"
r1 = Rectangle(50, 50, 90, 60, 100)
r2 = Circle(350, 80, 40)
end
function love.update(dt)
r1:update(dt)
r2:update(dt)
end
function love.draw()
r1:draw()
r2:draw()
end
这是我的 shape. lua 文件。
Shape = Object:extend()
function Shape:new(x, y)
self.x = x
self.y = y
self.speed = 100
end
function Shape:update(dt)
self.x = self.x + self.speed * dt
end
The rectangle.lua
文件如下
Rectangle = Shape:extend()
function Rectangle:new(x, y, width, height)
Rectangle.super.new(self, x, y)
self.width = width
self.height = height
end
function Rectangle:draw()
love.graphics.rectangle("line", self.x, self.y, self.width, self.height)
end
我现在想要的最终结果是一个圆形和一个矩形在屏幕上以同样的速度向右移动。
如果有帮助的话,我也在使用Atom文本编辑器。
我希望答案能坚持使用 "经典 "库,所以如果有人使用它,非常感谢帮助!
Shape
是一个 nil
价值的范围内,您的 rectangle.lua
你 require "rectangle"
执行该文件中的代码,其中 Rectangle = Shape:extend()
立即导致索引错误 Shape
.
增加 require "shape"
到 rectangle.lua
应该可以解决这个问题。
另一个选择是切换到 require "shape"
和 require "rectangle"
在你 main.lua
但在你真正需要的地方要求东西就更好了。