Перейти к содержанию

Дайджесты за январь-февраль

Обновления гайдов и аддонов

Январь Февраль

Мониторинг серверов и редактор аддонов

Представляем вам две легенды. То, о чем можно было только мечтать, стало реальностью.

Мониторинг серверов Редактор аддонов

Подсказки из игры на вашем сайте

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

Подробнее

Апдейтер аддонов

Представляем вам программу для автообновления аддонов и делимся подробностями.

Подробнее Скачать

слежка за событиями


icreator

Рекомендуемые сообщения

правильно ли делать слежку за событиями, в ответ на действия аддона так, чтобы такие же события от пользователя не обрабатывались:

объявляем слежку

common.RegisterEventHandler( OnEvetMY, "EVENT_1" )

а в вызываемой процедуре сразу обрубаем:

function OnEvetMY ( pars )

common.UnRegisterEvent( "EVENT_1" )

...

Ссылка на комментарий
Поделиться на другие сайты

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

Ссылка на комментарий
Поделиться на другие сайты

Quote:
правильно ли делать слежку за событиями, в ответ на действия аддона так, чтобы такие же события от пользователя не обрабатывались:


Я не понял вопроса, наверное. Имеется ввиду, что событие нужно поймать всего один раз, и прекратить слежку, так? Если так, то ДА, это делается именно так, с помощью common.UnRegisterEvent() или common.UnRegisterEventHandler().


Но, как заметил Setras, команда

common.UnRegisterEvent( "EVENT_1" )

отписывает ВООБЩЕ ВСЕ функции аддона от отслеживания события "EVENT_1". Если в аддоне такая функция всего одна, то всё в порядке. Но, если их больше одной, то, наверное, лучше вот так:

common.UnRegisterEventHandler( OnEvetMY, "EVENT_1" )

такая команда отпишет только функцию OnEvetMY(), а остальные не тронет.
Ссылка на комментарий
Поделиться на другие сайты

понятно. а по части производительности? если события происходят например часто, скажем обработка списка почты, то лучше включать /выключать слежку или просто в подпрограмме-обработчике OnEvetMY сделать пару проверок?

и еще вопрос - если на одно событие подписано несколько подпрограмм - то как они будут вызываться?

Ссылка на комментарий
Поделиться на другие сайты

Quote:
а по части производительности?

Если событие происходит редко, то можно не отписывать.
Но если оно происходит довольно ЧАСТО, то тогда лучше подписываться только на тот момент, когда оно нужно, а потом отписываться.

Quote:
если на одно событие подписано несколько подпрограмм - то как они будут вызываться?

По очереди. Но, в каком порядке - я не знаю. Никогда с этим не экспериментировал.
Ссылка на комментарий
Поделиться на другие сайты

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...

Важная информация

Пользуясь сайтом, вы принимаете Условия использования