在corona lua中从数组中删除特定对象

时间:2013-11-27 20:54:36

标签: arrays lua corona

我试图随机产生的物体朝向可以在屏幕上拖动的球移动。基本上我只是希望用户尝试避免这些对象。我试图使箭头产生并移向球位置,然后在一段时间后消失。此代码适用于第一个箭头但是当它尝试删除它调用的第二个代码并且错误地说attempt to call method 'remove self' (a nil value)时。

local function cleararray()
    if ( object[objectTag] ) then
        object[objectTag]:removeSelf()
    end
end

local function spawnObject()
    objectTag = objectTag + 1
    local objIdx = mRandom(#objects)
    local objName = objects[objIdx]
    object[objectTag]  = display.newImage("btn_arrow.png") 
    object[objectTag].x = mRandom(320)
    object[objectTag].y = mRandom(480)
    object[objectTag].name = objectTag
    print(objectTag)
    transition.to( object[objectTag], { time=2000, y=myObject.y, x=myObject.x } )
    timer.performWithDelay(2000,cleararray,1)
end

1 个答案:

答案 0 :(得分:0)

cleararray可以通过某种方式了解您要删除的对象。引用objectTag将不起作用,因为它是全局的,因此它始终具有您到目前为止所达到的最高值,而不是您尝试删除的对象的值。相反,您可以创建一个引用该对象的闭包,因此它知道要操作的对象。

local function spawnObject()
    objectTag = objectTag + 1
    object[objectTag].name = objectTag
    ...
    local function cleararray()
        object[object.name]:removeSelf()
        object[object.name] = nil
    end
    timer.performWithDelay(2000,cleararray,1)
end