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})

4

2 回答 2

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 表

于 2013-07-03T21:53:05.387 回答
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“版本”。它需要您为表中的每个对象都有一个识别“标签”,您可能已经考虑到它看起来像是在用物品制作游戏。

希望能帮助到你。

于 2018-11-08T15:30:57.177 回答