addEventListener () в Lua - PullRequest
       4

addEventListener () в Lua

2 голосов
/ 26 ноября 2011

У меня проблема при работе с Corona и мне нужна помощь.

Когда я регистрирую прослушиватель событий, например object:addEventListener("touch", listener). Но функция слушателя имеет много параметров, подобных этому:

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

Мой вопрос заключается в том, как передать все параметры слушателю. Все поисковые запросы проходят только один раз.

Спасибо!

Ответы [ 3 ]

4 голосов
/ 26 ноября 2011

Один из способов сделать это - просто добавить свойства к объекту, к которому вы прикрепляете обработчик.В слушателе вы можете получить к ним доступ через параметр event.target.

, например, добавив новые свойства param1 и param2 к некоторым объектам изображения:

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, а также при каждом касании изображения 2 печатайте «AC / DC» и «ZZ Top».

4 голосов
/ 26 ноября 2011
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))
0 голосов
/ 07 сентября 2013

И вы можете добавлять события в любую таблицу lua, используя следующий класс:

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...