0

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

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

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

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

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

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

4

1 回答 1

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
于 2012-06-20T23:02:48.063 回答