使用参数Lua创建事件侦听器

时间:2013-03-28 13:10:45

标签: lua corona

我需要创建具有更多参数的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”。 我该如何删除它?

1 个答案:

答案 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))