Как удалить анонимный прослушиватель событий? - PullRequest
0 голосов
/ 22 августа 2011

Итак, я столкнулся с проблемой, которая решалась на других языках, но не в Corona / Lua. Как удалить прослушиватель событий с помощью анонимной функции?

Может показаться, что предполагается «сохранить ссылку на функцию», но я не уверен в синтаксисе этого в Lua. Я потратил некоторое время на его поиск, и самое близкое совпадение, которое я смог найти, было этот ответ , что не очень полезно для меня, потому что я был в Javascript и все такое.

Ответы [ 3 ]

3 голосов
/ 23 августа 2011

У Lua нет такой вещи, как "удалить прослушиватель событий". Это обрабатывается библиотеками / фреймворками, которые используют прослушиватели событий, в вашем случае Corona. У меня нет опыта работы с Corona, но вы смотрели документацию removeEventListener () ?

Кажется, вам просто нужно сохранить ссылку на слушателя, чтобы иметь возможность удалить ее позже. То есть вместо этого:

Runtime:addEventListener( "enterFrame", function() ... end )
-- cannot remove the listener, because you have no reference to it

Сделайте это:

-- store a reference to your listener, so that you can remove it
-- equivalent to: local handler; handler = function() ... end
local function handler() Runtime:removeEventListener("enterFrame", handler) end
Runtime:addEventListener( "enterFrame", handler )
0 голосов
/ 29 августа 2013

извините, выше ответ ерунда!сделать это следующим образом:

локальная функция xyz () конец блаблы

- или

локальная функция xyz = function () блабла конец

- добавитьслушатель

время выполнения: addEventListener ('enterFrame', xyz)

- удалить его снова

время выполнения: removeEventListener ('enterFrame', xyz)

0 голосов
/ 23 августа 2011

Хранение ссылки на функцию - это то же самое, что сохранение ссылки на переменную.Чтобы потом манипулировать объектом, нужно дать ему имя, верно?Ну, то же самое относится и к функциям.

Кстати, это проблема только при использовании функции в качестве слушателя.Однако есть другой стиль выполнения прослушивателей событий, когда вы используете таблицу в качестве прослушивателя, а затем в таблице указана функция, названная в честь события: http://developer.anscamobile.com/content/application-programming-guide-event-handling#Listeners_and_Event_Delivery

Я обычно предпочитаю использовать прослушиватели таблицы.

...