在Lua中删除数组中的项

在我正在创建的游戏中,有玩家可以触摸的物体。如果触摸这些物体,则舞台会被清除。由于有多个物体,我将所有东西都放在一个数组中,需要从数组中删除触摸过的对象,以便在数组为空时只调用舞台清除一次。这是我目前正在尝试使用的代码:

if event.phase == "ended" then
    for i=#objArray,0,-1 do
        if(#objArray ~= 0) then
            objArray[i] = table.remove(objArray)
        else
            storyboard.gotoScene("ClearStage", fade, 400)
            timer.pause(timerCount)
        end
    end
end

这个问题是,数组在通过循环后立即变为0。此外,我不认为i应该是objArray中的值。它应该是触摸的对象,但我不确定如何实现。我需要做类似这样的事情:

if objArray > 0 then
      --remove touched object from array
else
      --go to clear
end

我刚开始使用数组和循环,所以我还很困惑,希望有人可以帮我解决这个问题。我该如何告诉我的数组在数组大于0时仅删除触摸的对象?

实际上,不用担心。当调整我的代码时,我找到了解决方案。这是我最终使用的代码:

if(#objArray ~= 0) then
        objArray[0] = table.remove(objArray)
        if(#objArray == 0) then
            storyboard.gotoScene("ClearStage", fade, 400)
            timer.pause(timerCount)
        end
    end

基本上,我不再需要for循环,并使用0索引(如果我理解正确),如此objArray[0]从数组中删除对象。

点赞
用户1665243
用户1665243

我认为你可能是删除了你触碰的对象。尝试这样做:

display.remove(event.target);
event.target = nil;

移除后检查你的数组大小:

if #objArray == 0 then
    -- 在这里做你的数组清除工作
    table.remove(objArray)
end
2013-03-26 06:47:17