从电晕sdk中的表或组中删除对象[i]

时间:2012-06-20 22:24:42

标签: sdk lua corona

我有一个问题(很明显:P)

我正在创建一个迷你游戏,当我触摸一个Object-A时,会创建一个Object-B。 如果我触摸N次,则创建N Object-B。

(对象B是我游戏中的泡泡)

所以,当我触摸气泡(物体-B)时,我会尝试消失或执行任何操作。 我尝试将Object-B添加到数组

local t = {}

。 。

bur = display.newImage("burbuja.png")
table.insert(t,bur)

我在哪里写了我的eventListeners:

for i=1, #t do
bur[i]:addEventListener("tap",reventar(i))
end

和我的函数'reventar'

local function reventar (event,id)
table.remove(t,id)
end

我迷失了,只有我想要消失泡沫。

1 个答案:

答案 0 :(得分:1)

你可能会想做这样的事情:

local t = {}

bur = display.newImage("burbuja.png")
table.insert(t,bur)

-- declaring the function first so it can be used later in the for loop
local function reventar(event)
    t[event.target.id] = nil         -- We remove object from table
    event.target:removeSelf()        -- Also remember to remove from display
end

for i=1,#t do
    t[i].id = i
    t[i]:addEventListener("tap", reventar)
end

希望这有帮助。

修改

我会这样做,因为当你想循环遍历对象时它会更好:

local t = {}

-- declaring the function first so it can be used later
local function reventar(event)
    event.target.kill = true     -- Mark the clicked object for later destruction
end

bur = display.newImage("burbuja.png")
bur:addEventListener("tap", reventar)
table.insert(t,bur)

local function loop(event)
    for i = #t, 1, -1 do
        local object = t[i]

        -- Do stuff to object here, such as object.y = object.y + 1

        if object.kill then   -- Check if object is marked for destruction
            local child = table.remove(t, i)    -- Remove from table
            if child ~= nil then
                -- Remove from display and nil it
                child:removeSelf()
                child = nil
            end
        end
    end
end

Runtime:addEventListener("enterFrame", loop) -- Remember to remove this when no longer needed