2011-11-26 59 views
2

我在使用Corona時遇到問題,需要幫助。Lua中的addEventListener()

當我註冊一個事件監聽器,如object:addEventListener("touch", listener)。但聽衆的功能有很多這樣的參數:

function listener (event, param1, param2...) 
    ... 
end 

我的問題是,如何將所有的參數傳遞給偵聽器。所有搜索只傳遞一個段落事件。

謝謝!

回答

4
local function listener(param1, param2) 
     return function(event) 
       print(event.name, event.phase, param1, param2) 
     end 
end 

Runtime:addEventListener("touch", listener(12, 33)) 
Runtime:addEventListener("tap", listener(55, 77)) 
4

執行此操作的一種方法是隻將屬性添加到附加處理程序的對象。在收聽者中,您可以通過參數event.target訪問它們。

例如,增加新的param1param2性質一些圖像對象:

local touchHandler = function(event) 
    if event.phase == "began" then 
     local t = event.target 
     print("param1=" .. t.param1 .. ", param2=" .. t.param2) 
    end 
end 

local image1 = display.newImageRect("myImage.png", 100, 100) 
image1.param1 = "Apple" 
image1.param2 = "Zucchini" 
image1:addEventListener("touch", touchHandler) 

local image2 = display.newImageRect("myImage.png", 100, 100) 
image2.param1 = "AC/DC" 
image2.param2 = "ZZ Top" 
image2:addEventListener("touch", touchHandler) 

這將打印「蘋果」和「西葫蘆」當你觸摸圖像1,並打印「AC/DC」和「ZZ的頂級「每次你觸摸image2。

0

你可以使用下面的類事件添加到任何LUA表:

https://github.com/open768/library/blob/master/lib/lib-events.lua

+1

注意[僅鏈接答案](http://meta.stackoverflow.com/tags/link-only -answers/info),所以SO答案應該是搜索解決方案的終點(而另一個引用的中途停留時間往往會隨着時間的推移而變得過時)。請考慮在此添加獨立的摘要,並將鏈接保留爲參考。 – kleopatra

+0

請提供答案deatails .. –