2

我需要创建带有更多参数的 enterFrame 侦听器,而不仅仅是事件。我读过这个: Lua 中的 addEventListener() 第一种方法,使用

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);

不起作用,因为函数名称不是“侦听器”。我怎样才能删除它?

4

1 回答 1

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

于 2013-03-28T17:53:30.020 回答