在Lua中删除对象的问题

时间:2014-03-31 09:42:11

标签: lua corona

我有无限的箭头对象......

local function deleteit(obj)
  display.remove(obj)
end

local function createArrow()
  local arrow = display.newImageRect("images/right",64,64)
  arrow.x = centerX
  arrow.y = centerY
  transition.to(arrow,{time = 1000, x = 0 , y = 0 , onComplete = deleteit(arrow)})
end

timer.performWithDelay(1000,createArrow,0)

但是当我运行这个游戏时,我的所有箭头都消失了。我知道他们为什么会消失,但我不知道如何修复这段代码。请帮帮我。

PS。由于内存问题我无法使用数组。

1 个答案:

答案 0 :(得分:2)

问题在于,当您为 onComplete 分配回调时,您实际上正在调用 deleteit 函数,因此您将在计时器到期之前删除该对象。

回调需要对函数的引用,但实际上是在调用函数而不是仅仅获取引用。

试试这个:

local function createArrow()
   local arrow = display.newImageRect("images/right",64,64)
   arrow.x = centerX
   arrow.y = centerY

   local cb = function()
     deleit( arrow )
   end

   transition.to(arrow, {time=1000, x=0, y=0, onComplete=cb} )
end