使用rxi编写的 "经典 "库时遇到的问题

问题描述 投票:0回答:1

目前,我正在尝试学习如何使用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文本编辑器。

我希望答案能坚持使用 "经典 "库,所以如果有人使用它,非常感谢帮助!

lua love2d
1个回答
1
投票

Shape 是一个 nil 价值的范围内,您的 rectangle.lua

require "rectangle" 执行该文件中的代码,其中 Rectangle = Shape:extend() 立即导致索引错误 Shape.

增加 require "shape"rectangle.lua 应该可以解决这个问题。

另一个选择是切换到 require "shape"require "rectangle" 在你 main.lua但在你真正需要的地方要求东西就更好了。

© www.soinside.com 2019 - 2024. All rights reserved.