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

関数名が「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 に答える