Доброго времени суток, прошу сильно не бить за тупые вопросы

, я только учусь.
Предположим, имеется кастомный аналог NumericStepper'а

Код AS3:
public class UISimpleStepper extends Sprite {}
у которого есть вот такой сеттер:

Код AS3:
public function set value (val:Number):void {
if (val != _value) {dispatchEvent (new Event (Event.CHANGE));}
_value = val;
if (!correctValue ()) {updateText ();}
}
Теперь я создаю класс, служащий для организации работы нескольких таких степперов (но в этом примере экземпляр степпера всего один):

Код AS3:
package main.engine.ui {
import flash.display.Sprite;
import flash.events.Event;
import main.engine.ui.UISimpleStepper;
public class A extends Sprite {
protected var _stepper:UISimpleStepper;
public function A () {
_stepper = new UISimpleStepper ();
addChild (_stepper);
_stepper.addEventListener (Event.CHANGE, onStepperChange);
}
private function onStepperChange (e:Event):void {
var someCondition:Boolean;
// do something here
if (someCondition) {dispatchEvent (new Event (Event.CHANGE));}
}
public function get stepper ():UISimpleStepper {
return _stepper;
}
}
}
То есть изменение значения одного степпера должно привести к вызову метода A.onStepperChange(), который при определенных условиях должен разослать свое собственное событие Event.CHANGE.
Теперь document class:

Код AS3:
package main {
import flash.display.Sprite;
import flash.events.Event;
import main.engine.ui.A;
import flash.utils.getQualifiedClassName;
public class Events extends Sprite {
public var a:A;
public function Events () {
addEventListener (Event.ADDED_TO_STAGE, initialize);
}
private function initialize (e:Event):void {
removeEventListener (Event.ADDED_TO_STAGE, initialize);
a = new A ();
addChild (a);
a.addEventListener (Event.CHANGE, onChange);
}
private function onChange (e:Event):void {
trace (getQualifiedClassName (e.target), ":", e.eventPhase);
}
}
}
При изменении значения степпера событие от него естессно рассылается к экземпляру класса A и дальше к main.Events. Output такой:
Цитата:
|
main.engine.ui::UISimpleStepper : 3
|
Единственное решение, которое я смог найти, чтобы событие от степпера не обрабатывалось листенером от Events, - прописать в Events.onChange() условие:

Код AS3:
if (e.target is A) {/* do smth */}
Подскажите плиз, как это сделать по-человечески?