Jump to content
Alloder.pro  about Allods with love 😱
Search In
  • More options...
Find results that contain...
Find results in...

Servers monitoring and the Addons Editor

We present you two legends. All dreams come true.

Servers monitoring The Addons Editor

Digest April

We talk about what was done and updated in the past month. We help keep abreast of events.

Read more

Game tooltips

Tooltips provide a way for 3rd party fansites and extensions to display detailed information on mouseover.

Read more

EVENT_EFFECT_FINISHED и MainScreenControl3D


LEM
 Share

Recommended Posts

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

Для виджетов, прикрепленных к 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)
Link to comment
Share on other sites

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

By using our site you agree to the Terms of Use