【发布时间】:2017-02-10 18:11:24
【问题描述】:
我一直试图弄清楚如何在 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 框架。
感谢您抽出宝贵时间回答。
【问题讨论】:
-
只写
self:get(x, y)而不是self.Level:get(x, y) -
它现在工作了,我觉得很愚蠢,谢谢。