【问题标题】:Removing items in an array in lua在lua中删除数组中的项目
【发布时间】:2013-03-26 14:47:17
【问题描述】:

在我尝试创建的游戏中,我有玩家可以触摸的对象。如果这些物体被触摸,舞台将被清除。由于有多个对象,我将所有内容都放在一个数组中,我需要从数组中删除被触摸的对象,这样它只会在数组为空时调用 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] 从数组中删除对象。

【问题讨论】:

    标签: lua coronasdk


    【解决方案1】:

    我认为你可能删除了你触摸的对象。试试这个

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

    删除后检查您的数组大小

    if #objArray == 0 then
        --here you do your array clear work
        table.remove (objArray )
     end
    

    【讨论】:

    • 感谢您的建议。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-19
    • 2021-11-23
    • 2021-10-03
    • 1970-01-01
    • 2014-09-21
    • 2013-07-11
    • 2019-02-15
    相关资源
    最近更新 更多