我有一个问题(很明显: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
我迷失了,只有我想要消失泡沫。
答案 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