Вот исправление.добавить прослушиватель событий, когда состояние изменяется.Я использую currentStateChangeevent:
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600" currentStateChange="application1_currentStateChangeHandler(event)">
В слушателе вручную установите эффекты rollOverEffect и rollOutEffect:
<fx:Script>
<![CDATA[
import mx.events.StateChangeEvent;
protected function application1_currentStateChangeHandler(event:StateChangeEvent):void
{
// TODO Auto-generated method stub
if(bc){
bc.setStyle('rollOverEffect',animateColorON);
bc.setStyle('rollOutEffect',animateColorOFF);
}
}
]]>
</fx:Script>
Обязательно дайте BorderContainer идентификатор.Я использовал bc:
<s:BorderContainer id="bc" width="100%" height="30" cornerRadius="4" borderVisible="false" buttonMode="true" rollOverEffect="animateColorON" rollOutEffect="animateColorOFF" >
Я не уверен, почему эти эффекты теряются.Моя лучшая теория заключается в том, что это как-то связано с тем, как ActionScript генерируется за кулисами.Несмотря на то, что rollOverEffect и rollOutEffect являются свойствами компонента, на самом деле они реализованы за сценой в виде стилей.Бьюсь об заклад, по какой-то причине, при переключении состояний стили «эффекта» не сбрасываются.Вы должны были бы взглянуть на сгенерированный ActionScript, чтобы знать наверняка.