从Corona SDK的表格或组中删除对象[i]。

我有一个问题(显然 :P)

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

(Object-B是我的游戏中的气泡)

所以,我尝试当我触摸气泡(object-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 reventareventidtable.removetidend

我迷失了,我只想让气泡消失。

点赞
用户1276924
用户1276924

你可能想要像这样做:

local t = {}

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

-- 首先声明函数以便它可以在 for 循环中使用
local function reventar(event)
    t[event.target.id] = nil         -- 我们从表中删除对象
    event.target:removeSelf()        -- 同样也要记得从展示中删除
end

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

希望这有所帮助。

编辑

我会这样做,因为当您想要循环遍历对象时,这是更好的方法:

``` local t = {}

-- 首先声明函数以便它可以在以后使用 local function reventar(event) event.target.kill = true -- 为以后销毁标记单击的对象 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]

    -- 在此处对对象执行操作,例如 object.y = object.y + 1

    if object.kill then   -- 检查对象是否标记为销毁
        local child = table.remove(t, i)    -- 从表中移除
        if child ~= nil then
            -- 从展示中移除并使其为 nil
            child:removeSelf()
            child = nil
        end
    end
end

end

Runtime:addEventListener("enterFrame", loop) -- 记得在不再需要时删除此项

2012-06-20 23:02:48