-1

我想从年龄增加到 20 秒的组中删除一个对象,对象是在游戏开始后 20 秒后创建的,所以它在游戏循环中显示 nil 值错误,我想知道如何检查一个 nil 对象,因为这里的游戏循环是在对象创建之前执行的,请尝试解决问题。谢谢...

下面是代码:

    function createobject(event)
        local object=display.newImage("obj1.png")
        object.x=500
        object.y=600
        object.GeneratedTime=event.time/1000
        group:insert( object )
    end

    function showobj(event)
        createobject(event)
    end
        timer.performWithDelay(8000, showobj, 0)

        function gameloop(event)
             if group~=nil then
                for i=1,group.numChildren do
                         local child = group[i]
                         local age= event.time/100-child[i].GeneratedTime
                         if age>20 then
                         child.parent:remove( child[i] )
                         end
                end
             end
        end

        Runtime:addEventListener( "enterFrame", gameloop )
4

2 回答 2

1

试试这个:

if(child[i]~=nil)then    -- You can check for the existence of child as this --
  local age= event.time/100-child[i].GeneratedTime
  if age>20 then
    child.parent:remove( child[i] )
  end
end

继续编码...... :)

于 2013-09-09T05:09:24.790 回答
0

我还没有使用过电晕,但是如果你只是要检查对象是否存在,我可以看到你在 show obj 函数的 arg 1 上得到了事件,你说它只是在计时器过去后给出 nil。因此,检查您的对象是否为零的最佳方法如下:

function showobj(event)
   if event == nil then return end
   createobject(event)
end
于 2013-09-08T20:07:16.537 回答