В качестве дополнения к ответу Кристофа Хермермана, и если вам интересно, вот способ сделать ваши собственные события ...
package yourpackage.events
{
import flash.events.Event;
[Event(name="EV_Notify", type="yourpackage.events.EV_Notify")]
public class EV_Notify extends Event
{
public function EV_Notify(bubbles:Boolean=true, cancelable:Boolean=false)
{
super("EV_Notify", bubbles, cancelable);
}
}
}
Я взял на себя смелость установить значение по умолчанию bubbles
в true и передать пользовательский тип события в супер-конструктор по умолчанию, так что вы можете просто сказать ...
dispatchEvent(new EV_Notify());
В вашем конкретном случае я сомневаюсь, что бывают случаи, когда вы не хотите, чтобы ваше событие вспыхнуло.
Префикс EV_
в имени является моим собственным соглашением для событий, поэтому я легко могу найти их во всплывающих окнах завершения кода, вы, очевидно, выберете свое собственное имя.
Для двух приведенных вами случаев вы можете либо иметь два события и прослушивать оба из них, либо добавить свойство к событию, которое сообщает о том, что только что произошло, - это подход, который используется такими элементами управления, как Alert
.. .
package yourpackage.events
{
import flash.events.Event;
[Event(name="EV_Notify", type="yourpackage.events.EV_Notify")]
public class EV_Notify extends Event
{
public static var BUTTON_PRESSED:int = 1;
public static var ANIMATION_ENDED:int = 2;
public var whatHappened:int;
public function EV_Notify(whatHappened:int, bubbles:Boolean=true, cancelable:Boolean=false)
{
this.whatHappened = whatHappened;
super("EV_Notify", bubbles, cancelable);
}
}
}
тогда вы называете это следующим образом ...
dispatchEvent(new EV_Notify(EV_NOTIFY.ANIMATION_ENDED));
затем вы можете проверить поле whatHappened в вашем обработчике событий.
private function handleNotify(ev:EV_Notify):void
{
if (ev.whatHappened == EV_Notify.ANIMATION_ENDED)
{
// do something
}
else if (ev.whatHappened == EV_Notify.BUTTON_PRESSED)
{
// do something else
}
etc...
}
НТН