在Lua中使用addEventListener()函数。

我在使用 Corona 时遇到了问题,需要帮助。

当我注册事件监听器时,例如 object:addEventListener("touch", listener)。但监听器函数有许多参数,如下所示:

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

我的问题是如何将所有参数传递给监听器。所有搜索结果只传递一个参数是事件。

谢谢!

原文链接 https://stackoverflow.com/questions/8276127

点赞
stackoverflow用户1025151
stackoverflow用户1025151
本地函数 listener(param1, param2)
        返回 function(event)
                打印(event.name, event.phase, param1, param2)
        结束
结束

Runtime:addEventListener("touch", listener(12, 33))
Runtime:addEventListener("tap", listener(55, 77))
2011-11-26 07:48:43
stackoverflow用户5420
stackoverflow用户5420

一种方法是将属性添加到您附加处理程序的对象中。在监听器中,您可以通过 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时打印出“Apple”和“Zucchini”,每次您触摸图像2时打印出“AC/DC”和“ZZ Top”。

2011-11-26 19:01:06
stackoverflow用户2756715
stackoverflow用户2756715

你可以使用以下类将事件添加到任何Lua表中:

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

2013-09-07 10:07:19