使用parametrs Lua创建事件侦听器
我需要创建具有更多参数的enterFrame侦听器,而不仅仅是事件。我读过: 第一种方法,使用使用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)) 工作很好,但现
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))