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

我一直在尝试弄清楚如何在 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 = {}
    -- 为地图数据生成 1D 数组
    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面向对象的新手,而且我正在使用 Love2D 框架,如果这有任何进展,那真是太好了。

感谢您抽出时间来回答。

点赞
用户6912664
用户6912664

所以,Egor在评论中回答了这个问题。无论如何,我只需要使用self代替self.Level。谢谢Egor。

2016-10-02 20:41:31