使用parametrs Lua创建事件侦听器

使用parametrs Lua创建事件侦听器,lua,coronasdk,Lua,Coronasdk,我需要创建具有更多参数的enterFrame侦听器,而不仅仅是事件。我读过: 第一种方法,使用 local function listener(param1, param2) return function(event) print(event.name, event.phase, param1, param2) end end Runtime:addEventListener("touch", listener(12, 33)) 工作很好,但现

我需要创建具有更多参数的enterFrame侦听器,而不仅仅是事件。我读过: 第一种方法,使用

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”。
如何删除它?

您可以缓存正在创建的函数,以便
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))