2016-11-23 1 views
0

Je reçois toujours une erreur quand j'essaye d'exécuter mon script lua. L'erreur est: mauvais Argument n ° 1 à 'insérer' (tableau prévu, obtenu nul)mauvais argument n ° 1 à 'insert' (table attendue, got nil) erreur dans love2d lua

ici est mon code gameloop:

local GameLoop = {} 

local insert = table.insert 
local remove = table.remove 

function GameLoop:create() 

    local gameLoop = {} 

    function gameLoop:addLoop(obj) 

     insert(self.clocks,obj) 

    end 

    function gameLoop:update(dt) 

     for clocks = 0,#self.clocks do 
      local obj = self.clocks[clocks] 
      if obj ~= nil then 
       obj:tick(dt) 
      end 
     end 

    end 

return gameLoop 

end 

return GameLoop 

Répondre

0

À partir du code que vous avez montré, vos gameLoop tableaux ne pas contenir un clocks membre, donc vraiment vous passez nil au premier argument de insert(self.clocks, obj).

Une solution simple consiste à ajouter ce membre.

local gameLoop = { clocks = {} } 

En aparté, il est généralement préférable d'écrire ce type de construction en utilisant métatables, car il réduit la duplication des fonctions.

local insert, remove = 
    table.insert, table.remove 

local GameLoop = {} 
GameLoop.__index = GameLoop 

function GameLoop:create() 
    return setmetatable({ 
     clocks = {} 
    }, self) 
end 

function GameLoop:addLoop (obj) 
    insert(self.clocks, obj) 
end 

function GameLoop:update (dt) 
    for _, clock in ipairs(self.clocks) do 
     obj:tick(dt) 
    end 
end 

return GameLoop 
+1

Merci beaucoup! La fenêtre s'ouvre maintenant sans aucune erreur. (fonctionne parfaitement!) – Ninjakid