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

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

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

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

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

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

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

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

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

Подробнее

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

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

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

EVENT_EFFECT_FINISHED и MainScreenControl3D


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

Не совсем ясно баг это или фича.

Для виджетов, прикрепленных к MainScreenControl3D, событие EVENT_EFFECT_FINISHED приходит всем аддонам.

Вроде бы ничего страшного. Так и есть, но бывают определенные трудности из-за этого.

Для примера возьмем вот такой код:

common.RegisterEventHandler(function(event)
  if event.effectType == ET_FADE then
    -- специально для примера виджет берется из event.wtOwner
    event.wtOwner:PlayFadeEffect(1, 0, 150, EA_SYMMETRIC_FLASH)
  end
end, 'EVENT_EFFECT_FINISHED')

widget:PlayFadeEffect(1, 0, 150, EA_SYMMETRIC_FLASH)

Ну что здесь такого? Простая реализация бесконечного моргания виджета.

Есть две проблемы:

  1. А что, если виджет будет уничтожен в процессе? Событие придет, но виджет перестанет быть валидным. Скорее всего мы получим ошибку.
  2. Если другой аддон запустит эффект для виджета, который прикреплен к MainScreenControl3D, то наш код заставит моргать и этот виджет.

Эта заметка писалась больше для описания второй проблемы, но первая тоже вполне реальна.

А еще можно было изначально не использовать виджет из event.wtOwner. Было бы не так фатально.

Исправляем:

common.RegisterEventHandler(function(event)
  if event.effectType == ET_FADE and event.wtOwner:IsValid() and event.wtOwner:IsEqual(widget) then
    -- специально для примера используется виджет из event.wtOwner
    event.wtOwner:PlayFadeEffect(1, 0, 150, EA_SYMMETRIC_FLASH)
  end
end, 'EVENT_EFFECT_FINISHED')

widget:PlayFadeEffect(1, 0, 150, EA_SYMMETRIC_FLASH)
Ссылка на комментарий
Поделиться на другие сайты

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

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

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

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

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

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

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

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

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