2016-06-17 6 views
0

私は約1年前にこのプロジェクトに取り組んでいました。私はそれに戻ってきました、そして、私はそれを実行するとエラーをスローします。 "試してコールフィールド"引き出し "(テーブル値)"です。奇妙な "呼び出しフィールド"引き出し "(テーブル値)"エラー

引き出しフィールドが

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 

です。これは、これはそれが

と呼ばれているされている
local tlm = {} 

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

これは、大文字の 'renderer'と小文字の' renderer'、および関数 'レンダラで少し混乱だ:create'は、実際に私たちの観点から、終わりはありません。コードを少し明確にすることができますか? – user6245072

+0

また、エラーを検出しました。 'drawers'は実際にいくつかのテーブルを含むテーブルですが、' renderer:addRenderer'から引数として 'l'を渡して呼び出すことになります。繰り返しますが、私はあなたがしたいことを理解できません。 – user6245072

答えて

0

これは正しくありません:

insert(self.drawers(l), obj) 

self.drawersは関数ではありませんが、テーブル。したがって、self.drawers(1)のような関数呼び出しはエラーになります。

あなたが呼び出す必要がありルアス標準関数使用してインデックスlでテーブルself.drawersに要素を挿入したい場合は、次の

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

を使用すると、インデックスlで値を置き換えたい場合は、単にself.drawers[l] = objを書くことができます

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

関連する問題