Если я правильно понял, вы хотите создать своего рода анимированное всплывающее меню поведения. Вы хотите отобразить панель, когда пользователь наводит курсор на исходную кнопку, и снова скрыть ее, когда пользователь отводит мышь от меню.
Ваша проблема в том, что вы сразу скрываете панель на mouseOut. Это не то, что вам нужно, потому что вы часто получаете событие mouseOut, когда пользователь перемещает курсор между компонентами на панели.
Лучший подход состоит в том, чтобы событие mouseOut инициировало таймер, который запустит переход после небольшой задержки, а затем отменит этот таймер, если в это время вы получите другое событие mouseOver.
Это будет выглядеть примерно так (не проверено):
mouseOver="showMenu()"
mouseOut="hideAfterDelay()"
protected var t:Timer;
protected function hideAfterDelay ():void {
killTimer();
t = new Timer(500, 1);
t.addEventListener(TimerEvent.TIMER_COMPLETE, onTimerComplete);
t.start();
}
protected function onTimerComplete ():void {
currentState = "normal";
killTimer();
}
protected function killTimer ():void {
if (t) {
t.removeEventListener(TimerEvent.TIMER_COMPLETE, onTimerComplete);
t.stop();
t = null;
}
}
protected function showMenu ():void {
killTimer();
currentState = "expanded";
}
Вам нужны обработчики мыши как для исходной кнопки, так и для меню. Возможно, вам придется внести некоторые коррективы, но, надеюсь, это показывает основную идею.