2012-06-20 6 views
0

나는 문제가있다 (obviusly : P)개체 삭제 [I]는

난 개체-A를 터치 때 미니 게임을 만들 수있어, 및, 오브젝트 B를 작성 . N 번 터치하면 N Object-B가 생성됩니다.

(객체 B는 내 게임에 거품이다) 내가 사라지거나 어떤 작업을 수행 버블 (객체 B)를 터치하면

그래서, 내가하려고합니다. 나는 배열

local t = {} 

에 객체 B를 추가하려고합니다. . . 난 내 이벤트 리스너가 어디

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

와 나는 썼다 :

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

내 기능 'reventar'

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

내가 잃었어요, 단지 내가 원하는이 거품이 사라집니다. 당신은 아마거야

답변

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