3 января 2009. Event bubbling на живом примере
Почему-то очень часто на форумах по AS3 возникают вопросы по всплыванию событий (Event Bubbling). Многие программисты просто не понимают самой модели поведения этой схемы и постоянно наступают на грабли, пытаясь понять, почему они не могут отловить событие в другой ветке.
Вот давайте посмотрим на сильно утрированный живой пример всплывания события. Существует какая-то строительная компания с центральным офисом в городе Ку. В этом городе Ку компания в данный момент строит три небоскреба. За строительством небоскребов наблюдает прораб. Допустим, что строительство находится на стадии, близкой к завершению и в данный момент все выглядит таким образом: на каждом этаже здания находится по одному строителю в каждой из комнат. По каждому этажу ходит надзиратель, который обходит каждую из комнат.
И вот, в какой-то момент, на одного из строителей в двадцатой комнате на тридцатом этаже одного из небоскребов падает на голову кирпич (неважно откуда он взялся). Строитель вместе с кирпичом, мастерком и стремянкой падает на пол. На шум прибегает надзиратель, переваривает информацию, помогает рабочему вылезти из-под навернувшейся стремянки и звонит прорабу, которому докладывает о произошедшем и сообщает все детали события. Прораб, будучи человеком неглупым, вызывает скорую помощь, чтобы бедолаге заштопали голову, а сам, скрепя сердце, звонит в главный офис, чтобы доложить о случае начальству, которому также сообщает все о произошедшем.
Так вот и выглядит фаза бабблинга. А вот теперь скажите мне, кодеры, каким образом надзиратель в другом небоскребе на неважно-каком-этаже узнает об этом событии? Правильно, в идеализированном случае – никак. Вот и нефиг ловить событие в другой ветке.
Тэги: as3