如何在Lua中使用middleclass调用类中的类函数

时间:2016-10-02 19:24:06

标签: oop lua love2d

我一直在试图弄清楚如何在Lua中的另一个类函数中调用类函数,但我认为可行的方式不会。

local class = require 'libs.middleclass'

local Level = class('Level')

function Level:initialize(width, height, tileSize)
    self.width = width
    self.height = height
    self.tileSize = tileSize
    self.data = {}
    --Generate a 1D Array for the map data
    for x = 1, self.width do
        for y = 1, self.height do
            table.insert(self.data, 0)
        end
    end
end

function Level:get(x, y)
    return self.data[x + (y-1) * self.width]
end

function Level:set(x, y, type)
    self.data[x + (y - 1) * self.width] = type
end

function Level:draw()
    for x = 1, self.width do
        for y = 1, self.height do
            if self.Level:get(x, y) == 0 then
                love.graphics.setColor(255, 255, 255)
                love.graphics.rectangle("fill", x * tileSize, y * tileSize, tileSize, tileSize)
                love.graphics.setColor(0, 0, 0)
                love.graphics.rectangle("line", x * tileSize, y * tileSize, tileSize, tileSize)
            elseif self.Level:get(x, y) == 1 then
                love.graphics.setColor(255, 255, 255)
                love.graphics.rectangle("fill", x * tileSize, y * tileSize, tileSize, tileSize)
            end 
        end
    end
end

return Level

不确定您是否需要所有代码,但这是我在level.lua对象类中的内容。我认为用self.method调用它会起作用,但它给了我:

objects/level.lua:29: attempt to index field 'Level' (a nil value)

这就是我可以说的全部内容,因为我刚开始在Lua中做OOP,如果这与任何方式有关,我也会使用Love2D框架。

感谢您抽出宝贵时间回答。

1 个答案:

答案 0 :(得分:0)

因此,Egor回答了这个问题,但在评论中这样做了。无论如何,我所要做的就是使用self而不是self.Level。谢谢叶戈尔。