Здравтсвуйте. Такое дело:
Есть класс StickButton, который расширяет SimpleButton, этот класс указан в качестве базового для нескольких кнопок в библиотеке. Он позволяет кнопке "залипать", если нужно, но сейчас не об этом. Еще в классе есть обработчики на MOUSE_OVER, MOUSE_DOWN, MOUSE_OUT и MOUSE_UP, что они делают можно понять по коду, так вот, мне нужно чтобы эти самые обработчики регистрировались только если у кнопки задан только upState и больше никаких, тоесть если в кнопке на сцене более одного кадра, то обработчики не добавляются. Вот код:

Код AS3:
package
{
import flash.display.DisplayObject;
import flash.display.SimpleButton;
import flash.events.MouseEvent;
import flash.filters.BevelFilter;
public class StickButton extends SimpleButton
{
private var old_state:DisplayObject;
private var old_x:Number;
private var old_y:Number;
private var _sticked:Boolean = false;
private var bevel:BevelFilter = new BevelFilter(3, 90, 0xFFFFFF, 0.75, 0x000000, 0.75, 5, 5, 0.5, 3);
public function StickButton()
{
this.addEventListener(MouseEvent.MOUSE_OVER, whenMouseOver);
this.addEventListener(MouseEvent.MOUSE_OUT, whenMouseOut);
this.addEventListener(MouseEvent.MOUSE_DOWN, whenMouseDown);
this.addEventListener(MouseEvent.MOUSE_UP, whenMouseUp);
}
private function whenMouseUp(e:MouseEvent):void {
this.x = old_x;
this.y = old_y;
}
private function whenMouseDown(e:MouseEvent):void {
old_x = this.x;
old_y = this.y;
this.x += 1;
this.y += 1;
}
private function whenMouseOut(e:MouseEvent):void {
this.filters = [];
}
private function whenMouseOver(e:MouseEvent):void {
this.filters = [bevel];
}
public function stick():void {
old_state = this.upState;
this.upState = this.overState;
_sticked = true;
}
public function unStick():void {
this.upState = this.old_state;
_sticked = false;
}
public function get sticked():Boolean { return _sticked; }
}
}
Подскажите как реализовать?