我有无限的箭头对象......
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。由于内存问题我无法使用数组。
答案 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