2013-06-29 156 views
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" 

碰撞

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

什么'event.other = nil'? – 8bitcartridge

+0

我只能假设你的函数必须位于事件监听器的顶部,如果你不能添加另一个代码 – DevfaR

回答

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表