2011-01-31 37 views
1

我已經有兩個狀態的項目,最好的形容爲打開和關閉,他們是這樣的:我應該如何平滑/ Flex中這兩種狀態之間的轉換flashbuilder

closed

open

而我想要做的是光滑一個狀態,另一方面,有效地以平穩的方式(正弦)在兩個點之間進行插值之間的過渡移動頁腳/ butto n塊,然後淡入餅圖。

然而,這顯然超出了我和我不能一小時+我在這裏張貼這樣做搏鬥之後:d

所以我的過渡塊如下所示

<s:transitions> 
    <s:Transition id="TrayTrans" fromState="*" toState="*"> 
     <s:Sequence> 
      <s:Move duration="400" target="{footer}" interpolator="{Sine}"/> 
      <s:Fade duration="300" targets="{body}"/> 
     </s:Sequence>  
    </s:Transition> 

    <s:Transition> 
     <s:Rotate duration="3000" /> 
    </s:Transition> 
</s:transitions> 

其中{body}指的是餅圖,{footer}指的是頁腳/按鈕塊。

然而,這並不工作,所以我真的不知道該怎麼辦...

這可能是有益的附加信息:

體塊始終是固定的高度(也許使用對於某些特效中的Xby變量?)。

它需要在兩個方向上工作。

哦和Sine塊在聲明中定義如上<s:Sine id="Sine">

此外!我將如何設置餅圖使用這些過渡塊連續旋轉? (這會在沒有標籤的情況下發生)或者是錯誤的方式去做,因爲它不是這樣的過渡?

我追求的效果是一個在餅圖慢慢之前選擇下方的按鈕的旋轉沒有標籤,但在選擇停止旋轉和標籤出現...

感謝很多提前!

並對灰度道歉,但我真的不能決定一個配色方案。歡迎任何建議。

回答

2

如果你不介意做一些動作編碼,使用as3函數會變得非常容易。

你需要做到以下幾點:

public function doTransition():void 
     { 
      var move:Move= new Move(); 
      move.target=footer; 
      move.yFrom = 0;//current position 
      move.yTo = 400;//or whatever is the final position of the footer 
      move.duration=500;//duration in milliseconds 

      var resize:Resize=new Resize(); 
      resize.target=body; 
      resize.heightFrom=0;//or whatever is initial height 
      resize.heightTo=400;//or whatver is the final height 
      resize.duration=500; 

      var fadeIn:Fade =new Fade(); 
      fadeIn.target = pieChart;//the id of the piechart 
      fadeIn.alphaFrom =0; 
      fadeIn.alphaTo = 1; 
      fadeIn.duration =500; 

      move.play(); 
      resize.play(); 
      fadeIn.play(); 
     } 

做的這,你需要的代碼來旋轉餅圖。 爲此,您可以使用定時器和旋轉變換。

+0

您確定這是在Flex 4中執行狀態轉換的最佳方式嗎?如果他們對MXML使用/使用舒適,則認爲並行效果將會成爲其中的一種方式 – Ryan 2011-02-01 10:33:53

0

爲了使您的補間更容易,我建議使用​​完成工作。你最終會寫更少的動作。