Як зрозуміти, що подія виконалась саме на передплатнику?
вівторок, Березень 11, 2008Іноді нам потрібно знати чи подія виконалась на передплатнику чи прийшло внаслідок bubbling. Наприклад, нам потрібно відслідкувати натискання миші на stage, але нам потрібно знати напевно, що користувач натиснув саме на stage, а не на його child. Авжеж, ми можемо зробити
stage.mouseChildren = false;
але це частіше всього не підходить.
Можна зробити двома рівносильними способами.
В обробнику для stage виконаємо перевірку на рівність event.target з event.currentTarget:
- function stageClickHandler(event:MouseEvent):void
- {
- if(event.target != event.currentTarget)
-
- return;
- // Your code here
- }
Або перевіримо яка наразі фаза event flow. Якщо вона дорівнює 2 (target phase), тоді подія виконалась саме на stage. Інакше припиняємо виконання обробника:
- function stageClickHandler(event:MouseEvent):void
- {
- if(event.eventPhase != 2)
-
- return;
- // Your code here
- }
Докладніше про подійну модель в ActionScript 3.0 ви можете почитати у доповіді Кості Ковальова (російською).

