2013-03-28 4 views
2

이벤트가 아닌 매개 변수가 많은 enterFrame 수신기를 만들어야합니다. addEventListener() in Lua 첫 번째 방법은,매개 변수가있는 이벤트 리스너 만들기 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

작성중인 함수를 캐시하여 listener(x, y)이 항상 동일한 것을 리턴 할 수 있습니다. 이런 식으로 뭔가 작동 할 수 있습니다 listener(12, 33) 항상 같은 결과를 반환하기 때문에

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 

은 지금 당신이 할 수있는 Runtime:removeEventListener("enterFrame",listener(12,33))