0

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

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。另外,我认为我不应该是 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] 从数组中删除对象。

4

1 回答 1

1

我想你可能删除了你碰过的对象。试试这个

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

删除后检查您的数组大小

if #objArray == 0 then
    --here you do your array clear work
    table.remove (objArray )
 end
于 2013-03-26T06:47:17.577 回答