В самом компоненте вы можете сделать это:
systemManager.addEventListener( FocusEvent.KEY_FOCUS_CHANGE, focusChangeHandler );
systemManager.addEventListener( FocusEvent.MOUSE_FOCUS_CHANGE, focusChangeHandler );
Просто убедитесь, что вы очистили и удалили прослушиватель событий, прежде чем ваш компонент будет удален со сцены (при условии, что он добавлен динамически). Это не позволит вам собрать кучу слушателей событий.
В качестве альтернативы, если вы просто хотите узнать, когда кто-то щелкает за пределами определенного компонента, вы можете сделать что-то вроде этого:
systemManager.addEventListener( MouseEvent.MOUSE_DOWN, system_mouseDownHandler );
private function system_mouseDownHandler( event:MouseEvent ):void {
if( !event.target != this && !this.contains(event.target as DisplayObject) ){
// Do Something Here
}
}
Опять же, убедитесь, что вы очищаете любые прослушиватели событий, если этот компонент добавляется / удаляется динамически.
Надеюсь, это поможет!
EDIT:
Если вы хотите очистить eventListeners, сделайте что-то вроде этого (вызывается, когда в вашем компоненте запускается событие удаления):
<mx:Component remove="myRemoveHandler();" />
private function myRemoveHandler():void {
if( systemManager.hasEventListener( MouseEvent.MOUSE_DOWN ) systemManager.removeEventListener( MouseEvent.MOUSE_DOWN, system_mouseDownHandler );
}
Очевидно, замените прослушиватели событий, которые вы в конечном итоге использовали (Focus или Mouse).