我在Lua(Corona SDK)中有一个问题:
我有一张可以画画和清晰的白板,但我的清晰度有问题。这是我的绘图功能:
if(phase == 'moved') then
local xStart, yStart = self.xStartTemp or e.xStart, self.yStartTemp or e.yStart
--add new line
local xEnd, yEnd = e.x, e.y
local line = display.newLine(xStart, yStart, xEnd, yEnd)
-- self:drawCircleStream(e.x, e.y)
self.xStartTemp, self.yStartTemp = xEnd, yEnd
line.strokeWidth = 1
line:setStrokeColor(0,0,0)
self.group:insert(line)
self.line = line
elseif(phase == 'ended') then
--store line in a table
self.xStartTemp, self.yStartTemp = nil, nil
local lineArr = self.lineArr
table.insert(lineArr, self.line)
end
return true
这是明确的(不起作用):
local lineArr = self.lineArr
for i=1,#lineArr do
print(lineArr[i])
table.remove(lineArr[i])
-- lineArr[i]:removeSelf()
end
答案 0 :(得分:2)
函数table.remove
接受两个参数:表本身和要删除值的索引。
在那里,代码应该是:
for i = 1, #lineArr do
print( lineArr[i] )
table.remove( lineArr, i )
end
答案 1 :(得分:0)
如果您知道要删除的值,也可以尝试一种简单的方法:
for k, v in pairs (tableName) do
if v==YOUR-VALUE then
tableName[k] = nil
return
end
end
只需更改“YOUR-VALUE”并添加值(如果您了解它)。
答案 2 :(得分:0)
在你的明确功能中。当你移除时,table.remove
将你的表格元素向下移动以填补空白,当它与for循环中的迭代相结合时,它会给你带来意想不到的行为:
t = { 2, 4, 6 }
for i, _ in ipairs(t) do
table.remove(t, i)
end
for _, v in ipairs(t) do
print(v)
end
最终结果是,t
仍然具有值4。
如果要清空表格,只需指定一个新表格:
self.lineArr = {}
要在不创建新表的情况下清除数组,请执行以下操作:
for i=1,#array do array[i] = nil end