我需要创建具有更多参数的enterFrame侦听器而不仅仅是事件。我读过这个: addEventListener() in Lua 第一种方式,使用
local function listener(param1, param2)
return function(event)
print(event.name, event.phase, param1, param2)
end
end
Runtime:addEventListener("touch", listener(12, 33))
工作得很好,但现在我在删除这个enterFrame监听器时遇到了问题。
Runtime:removeEventListener("enterFrame",listener);
不起作用,因为函数名称不是“listener”。 我该如何删除它?
答案 0 :(得分:1)
您可以缓存您正在创建的功能,这样listener(x, y)
将始终返回相同的功能。这样的事情可能有用:
local listeners = {}
local function listener(param1, param2)
-- add some separator, so 1,12 is different from 11,2
local key = param1.."\1"..param2
listeners[key] = listeners[key] or function(event)
print(event.name, event.phase, param1, param2)
end
return listeners[key]
end
由于listener(12, 33)
将始终返回相同的结果,现在您可以执行Runtime:removeEventListener("enterFrame",listener(12,33))