我想在lua中调用多个非常相似的方法,除非它们的参数改变一个字符。我现在这样做的方式有效,但效率非常高。
function scene:createScene(event)
screenGroup = self.view
level1= display.newRoundedRect( 50, 110, 50, 50, 5 )
level1:setFillColor( 100,0,200 )
level2= display.newRoundedRect( 105, 110, 50, 50, 5 )
level2:setFillColor (100,200,0)
--and so on so forth
screenGroup:insert (level1)
screenGroup:insert (level2)
screenGroup:insert (level3)
screenGroup:insert (level4)
end
我计划将screenGroop:insert方法扩展到数百个级别,最高可达(level300)。你可以看到我现在这样做的方式是低效的。我试着做了
for i=1, 4, 1 do
screenGroup:insert(level..i)
end
但我收到错误“预期的表格。”
答案 0 :(得分:3)
在这种情况下,最好的方法是使用表格:
local levels = {}
levels[1] = display.newRoundedRect( 50, 110, 50, 50, 5 )
levels[1]:setFillColor( 100,0,200 )
levels[2] = display.newRoundedRect( 105, 110, 50, 50, 5 )
levels[2]:setFillColor (100,200,0)
--and so on so forth
for _, level in ipairs(levels) do
screenGroup:insert(level)
end
对于其他选择,请查看来自@ EtanReisner评论的SO answer。
答案 1 :(得分:-1)
如果您的“级别”表格是全局的,可以使用getfenv
对其进行索引。
for i = 1, number_of_levels do
screenGroup:insert(getfenv()["level" .. i])
end
getfenv
以字典的形式返回包含所有全局变量的环境。因此,您可以像普通表一样对其进行索引,如getfenv()["key"]