2016-06-17 1 views
0

Je travaillais sur ce projet il y a environ un an. Je suis revenu à elle et maintenant il jette une erreur quand je l'exécute l'erreur est "tirent le champ d'appel" des tiroirs "(une valeur de table)".Étrange "tentative d'appel" tiroirs "(une valeur de table)" erreur

C'est où le champ tiroirs est

local Renderer = {} 

local num_of_layers = 2 
local insert = table.insert 
local remove = table.remove 


function Renderer:create() 
    local render = {} 

    render.drawers = {} 
    for i = 0, num_of_layers do 
     render.drawers[i] = {} 
    end 

    function render:addRenderer(obj, layer) 
     local l = layer or 0 
     insert(self.drawers(l), i, obj) 
    end 

    return render 
end 

return Renderer 

C'est là où il est appelé

local tlm = {} 

function tlm:load() 
    renderer:addRenderer(self) 
    gameloop:addLoop(self) 
end 
+0

Il est un peu à confusion avec la majuscule 'renderer' et' renderer' minuscules, et la fonction 'Renderer: create' n'a pas réellement fin, de notre point de vue. Pourriez-vous rendre le code un peu plus clair? – user6245072

+0

En outre, repéré l'erreur. 'drawers' est une table contenant des tables, mais vous l'appelez' l' comme argument de 'renderer: addRenderer'. Encore une fois, je ne peux pas comprendre ce que vous vouliez faire. – user6245072

Répondre

0

Ce n'est pas correct:

insert(self.drawers(l), obj) 

self.drawers est pas une fonction mais une table. par conséquent, un appel de fonction comme self.drawers(1) entraîne une erreur.

Si vous voulez insérer un élément à la table self.drawers à l 'indice en utilisant les fonctions standard Luas vous devez appeler:

table.insert(self.drawers, i, obj) 

Si vous voulez remplacer la valeur à l'index je vous pouvez simplement écrire self.drawers[l] = obj

http://www.lua.org/manual/5.3/manual.html#pdf-table.insert