有没有办法在Lua中引用当前正在执行的匿名函数?就像我们可以在arguments.callee
的JavaScript中一样。
E.g:
local function newLiftAnimator(obj)
local count = 0
return function(event)
-- animate obj's properties here on each "enterFrame" event
obj.y = obj.y - 1
count = count + 1
-- when done, remove event listener
if count >= 100 then
Runtime:removeEventListener("enterFrame", **<this_function>**)
end
end
end
Runtime:addEventListener("enterFrame", newLiftAnimator(ball))
答案 0 :(得分:4)
尝试
local f
f=function (event) ... Runtime:removeEventListener("enterFrame", f) ... end
return f
答案 1 :(得分:2)
没关系。在Lua的邮件列表中阅读this old message之后,我想出了一个明显的解决方案:
local function newLiftAnimator(obj)
...
local function animator()
...
Runtime:removeEventListener("enterFrame", animator)
end
return animator
end
答案 2 :(得分:1)
另一种可能性是使用:
debug.getinfo(1,'f').func