我使用LOVE2D习惯了点lua,并且尝试调用一个使屏幕上出现圆圈的函数,有5个参数,并且我有一个称为'button'的表,其中包含其中的参数。我想使用table.concat来填写所有空白参数,但它不允许我这样做。反正有这样做吗?
function toRGB(r,g,b)
return r/255,g/255,b/255
end
function love.load()
button = {}
button.mode = "fill"
button.x = 0
button.y = 0
button.size = 30
end
function love.draw()
love.graphics.setColor(toRGB(60,60,60))
love.graphics.circle(table.concat(button))
end
答案 0 :(得分:2)
table.concat
返回一个字符串。那不是你想要的。
要获取表元素的列表,请使用table.unpack
。但是此功能仅适用于具有从1开始的连续数字索引的表。
还love.graphics.circle
通过位置而不是名称来访问其参数。因此,您必须确保放入该函数的表达式列表具有正确的顺序。
类似这样:
button = {"fill", 0, 0, 30}
love.graphics.circle(table.unpack(button))
会工作的。
如果像示例中那样使用其他表键,则必须编写一个以正确顺序返回值的函数。
在最简单的情况下
button = {}
button.mode = "fill"
button.x = 0
button.y = 0
button.size = 30
button.unpack = function() return button.mode, button.x, button.y, button.size end
love.graphics.circle(button.unpack())
或者您可以执行以下操作:
function drawCircle(params)
love.graphics.circle(params.mode, params.x, params.y, params.size)
end
drawCircle(button)
还有许多其他方法可以实现这一目标。