我想了解如何使Flex轉換以具有吸引力的流暢方式運行。沒有他們顯得非常波濤洶涌,我無法讓他們工作。無法使Flex轉換行爲順利
我附上了一個愚蠢的演示應用程序來說明這一點。它顯示了一個具有自定義ItemRenderer的List。當列表中的項目被選中時,TextInput應該慢慢變大。 當一個項目被取消選擇時,TextInput應該慢慢收縮。
這個實現有2個問題,使它看起來很醜。這些可以通過在列表上點擊來使項目變成動畫。這些問題是:
當一個項目動畫但進入「懸停」狀態時,TextInput快速恢復爲小尺寸。爲什麼是這樣?
當某個項目的動畫被打斷時,它將捕捉到最大或最小大小,然後開始動畫,而不是從當前值繼續動畫。爲什麼?
任何幫助非常感謝。
感謝, 菲爾 TestApplication.mxml
<?xml version="1.0" encoding="utf-8"?>
<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"
initialize="init(event)"
minWidth="900" minHeight="600">
<fx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
import mx.events.FlexEvent;
protected function init(event:FlexEvent):void {
var ac:ArrayCollection = new ArrayCollection();
ac.addItem("A1");
ac.addItem("B2");
ac.addItem("C3");
myList.dataProvider = ac;
}
]]>
</fx:Script>
<s:List id="myList" width="410" height="350" itemRenderer="MyItemRenderer" requireSelection="true"/>
</s:Application>
MyItemRenderer.mxml
<?xml version="1.0" encoding="utf-8"?>
<s:ItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
autoDrawBackground="true">
<s:states>
<s:State name="normal" />
<s:State name="hovered" />
<s:State name="selected" />
</s:states>
<s:transitions>
<s:Transition fromState="*" toState="selected" id="itemHasBeenSelected" >
<mx:AnimateProperty property="width" toValue="300" duration="3000" target="{textInput}" />
</s:Transition>
<s:Transition fromState="selected" toState="*" id="itemHasBeenUnselected">
<mx:AnimateProperty property="width" toValue="100" duration="3000" target="{textInput}" />
</s:Transition>
</s:transitions>
<s:Group width="100%">
<s:Label text="{data}" color.selected="red" color.normal="black"/>
<s:TextInput x="100" id="textInput" width="100"/>
</s:Group>
</s:ItemRenderer>
該解決方案的作品,感謝和動畫看起來非常順利。我不知道autoReverse是一個非常好的功能。對於失去懸停狀態感到羞恥,因爲在我的真實應用程序中,「懸停」和「選定」狀態顯示關閉按鈕。 – Phil
作爲一個附加的「額外」,我不是Adobe的運動類的粉絲,並會推薦你看看[TweenMax](http://www.greensock.com/tweenmax/)。 –
是的,我自己,我無法讓這三個州在Adobe框架中一起工作。我並不是說這是不可能的,但J_A_X是正確的,通過使用其他工具或手動處理鼠標事件,可以使所有三個狀態順利地在彼此之間轉換。 – merv