在Lua中删除对象时出现问题。

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

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. 我由于内存问题无法使用数组。

点赞
用户2054602
用户2054602

问题在于当你为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
2014-03-31 09:53:10