Ich versuche, meine Füße mit LUA und Love2D nass zu machen, und ich habe ein Problem mit Objekt Instanziierung/Zugang in Lua.Liebe 2D (Lua) unerwartete Null im Objekt
Quelle mit dem Bug ist hier zu finden: https://bitbucket.org/dannsee/love_scrollingshooter In meinem Haupt, ich ein Objekt, Feinde
enemies = Enemies:new()
und innerhalb der Feinde widersprechen,
Ich bin erstellen erstelle ich ein Objekt zu halten Peristante Werte, die ich Timers nenne.
timers = Timers:new()
So die feindlichen Konstruktor "Methode aussieht (im Grunde) wie dieses
Enemies = {} -- so that Enemies will not be nil when new() is called
timers = {} -- so that timers will be accessible in the class scope
function Enemies:new(enemies)
enemies = enemies or {}
timers = Timers:new()
setmetatable(enemies, self)
self.__index = self
return enemies
end
während die Timer suchen als solche
Timers = {} -- so that Timers will not be nil when new() is called
function Timers:new(timers)
timers = timers or {
miniBombTimerMax = 0.2,
miniBombTimer = minibombTimerMax
}
setmetatable(timers, self)
self.__index = self
return timers
end
erstellt werden, aber wenn ich versuche, ein bis refrence von den Timern (aus dem Objekt des Feindes) erhalte ich eine Ausnahme von null Wert.
timers.miniBombTimer -- Produces nil exception
Es scheint mir, dass dies sowohl 1. in Umfang, da es sich um ein Objekt in dieser Klasse erstellt wird, und wird lokal als Timer = {} instanziiert, bevor er ein Wert zugewiesen wird, und 2. nicht, weil es im Konstruktor einen Wert erhält. Aber hier scheint mehr los zu sein, als dass ich es nicht verstehe.
Ich bin neu bei Lua, was an dieser Stelle offensichtlich sein kann, aber aus dem, was ich über den Variablenbereich gelesen habe, scheint es, dass dies gültig sein sollte. Ich verstehe nicht, warum die Timer nicht mit Werten erstellt werden.
Lesen durch http://lua-users.org/wiki/ObjectOrientationTutorial? Sie haben den Teil des Codes nicht mit dem Problem gezeigt, aber vermutlich verwenden Sie nicht "selbst"? – smarx
Ihre Konstruktoren verwenden auch nicht "self". Ich gehe davon aus, dass Sie möchten, dass "Timer" ein Mitglied der "Enemies" -Klasse sind, aber vielleicht nicht? Vielleicht können Sie ein minimales Beispiel dafür geben, wie Sie diese Klasse verwenden möchten. – smarx