无法从表中删除条目。
这是我的代码
dropItem = dropList[ math.random( #dropList ) ]
dropSomething[brick.index] = crackSheet:grabSprite(dropItem, true)
dropSomething[brick.index].x = brick.x
dropSomething[brick.index].y = brick.y
dropSomething[brick.index].name = dropItem
dropSomething[brick.index].type = "dropppedItems"
碰撞
function bounce(event)
local item = event.other
if item.type == "dropppedItems" then
if item.name == "bomb" then
Lives = Lives - 1
LivesNum.text = tostring(Lives)
end
item:removeSelf();
end
end
我尝试了什么:
item:removeSelf(); -- removes the whole table
item = nil -- seems to do nothing, the object continue
-- to move and i still see the image
我可以从屏幕上删除对象的唯一方法是将其隐藏起来
transition.to(item, {time = 100, alpha = 0})
答案 0 :(得分:0)
项目对象应该是您实际项目的副本。意思是,它不像指针那样。因此,如果您想从表格中删除某个项目,则应该在表格中找到它。
您可以像这样修改代码:
dropItem = dropList[ math.random( #dropList ) ]
dropSomething[brick.index] = crackSheet:grabSprite(dropItem, true)
dropSomething[brick.index].x = brick.x
dropSomething[brick.index].y = brick.y
dropSomething[brick.index].name = dropItem
dropSomething[brick.index].type = "dropppedItems"
dropSomething[brick.index].id = brick.index
function bounce(event)
local item = event.other
if item.type == "dropppedItems" then
if item.name == "bomb" then
Lives = Lives - 1
LivesNum.text = tostring(Lives)
end
dropSomething[item.id]:removeSelf();
dropSomething[item.id] = nil
end
end
假设弹跳功能可以达到dropSomething表
答案 1 :(得分:0)
如果要从表中删除对象,则可以使用函数'table.remove()',该函数非常易于使用。
为此,您有两种 方式: 一种是使用自定义函数,另一种是不使用。
我建议使用自定义功能。
为此,您可以做类似的事情
removeFromTable = function(tbl, lookfor)
for i,v in pairs(tbl)do
if(v.Name==lookfor)then -- change that to whatever you will use as a identification
table.remove(tbl, i);
end;
end;
end;
如果您在RBLX_Lua中,那会起作用。我不确定它是否可以在其他lua“版本”中使用。它需要您为表中的每个对象都有一个标识“标签”,您可能已经考虑到它看起来像是在制作带有物品的游戏。
希望有帮助。