Скажем, у меня есть EventListener в классе следующим образом:
Vehicle = {}
...
function Vehicle:touch(event)
-- do something with self
return
end
displayObject:addEventListener("touch", self)
Как сделать метод "touch" локальным, чтобы ни у кого не было желания вызывать его извне этого класса? Не заставляя компилятор жаловаться.
Спасибо, Майк. Я не осознавал, что ты можешь сделать так, как UI.lua:
local function newButtonHandler( self, event )
...
end
function newButton( params )
...
button.touch = newButtonHandler
button:addEventListener( "touch", button )
...
end
Однако параметры (self, event) в
local function newButtonHandler( self, event )
- это то, чего я раньше не видел - обычно только (событие). Является ли self, а также событие отправляется автоматически в метод прослушивателя события как следствие addEventListener?
В любом случае, то, что я изначально хотел сделать, - это иметь объект (называемый «buttonManager»), отличный от экранного объекта, который должен быть отправлен в метод класса eventListener, потому что мне нужен доступ к buttonManager там. Поэтому я подумал, что смогу написать:
button:addEventListener( "touch", buttonManager )
Но это приводит к тому, что eventListener вообще не вызывается. Как мне получить buttonManager для eventListener?