2012-05-25 48 views
0

我在flex 4中創建了我的第一個動畫效果。它是一個非常簡單的動畫,在我的自定義組件中將標籤組件從左到右移動3-5次,然後逐漸淡出。Flex 4 - 生澀的動畫問題

每一件事工作正常,但問題是,當我運行動畫第一次,它扮演着生澀的動畫和病房後,完美流暢。我不知道爲什麼。

有一個人能告訴什麼問題呢?

這是我的自定義組件的完整源代碼。將它添加到舞臺,調用showProgressEffect()之後會播放動畫。

請注意,我已經做了標籤「的cacheAsBitmap」,以避免閃爍,而移動標籤和打之前調用停止()每個動畫/效果的()方法。

<?xml version="1.0" encoding="utf-8"?> 
<s:Group xmlns:fx="http://ns.adobe.com/mxml/2009" 
     xmlns:s="library://ns.adobe.com/flex/spark" 
     xmlns:mx="library://ns.adobe.com/flex/mx" width="274" height="72" 
     click="onClick()" xmlns:components="ui.hud.components.*" cacheAsBitmap="true"> 
    <fx:Declarations> 
     <!-- Place non-visual elements (e.g., services, value objects) here --> 
     <s:Sequence id="tween" repeatCount="5" effectEnd="onEffectEnd()" > 
      <s:Move xBy="20" duration="500" /> 
      <s:Move xBy="-20" duration="500" xFrom="50"/> 
     </s:Sequence> 
     <s:Fade id="fadeEffect" alphaTo="0" duration="2000" /> 
    </fx:Declarations> 

    <fx:Script> 
     <![CDATA[ 
      [Bindable] 
      public var questId:int; 
      [Bindable] 
      public var questTitle:String; 
      [Bindable] 
      public var iconUrl:String; 

      private function onClick():void{ 

       Globals.questCtr.showQuest(questId); 

      } 
      private function onEffectEnd():void{ 

       fadeEffect.stop(); 
       fadeEffect.play([lblStatus]); 
      } 

      public function showProgressEffect():void{ 

       tween.stop(); 
       lblStatus.alpha = 1; 
       tween.play([lblStatus]); 
      } 

     ]]> 
    </fx:Script> 

    <mx:Image source="{iconUrl}" width="75" height="75"/> 
    <s:Group x="77" y="24" width="197"> 
     <s:Label id="lblStatus" text="Task Complete" fontWeight="bold" fontSize="25" alpha="0" cacheAsBitmap="true" hideEffect="" mouseEnabled="false"/>   
    </s:Group> 

</s:Group> 

回答

0

發生這種情況是因爲在動畫開始之前,您的標籤處於不同位置,而不是之後。我不知道你想實現什麼,但有兩個選擇:

  • 可以在第二招效果改變xFrom="50"xFrom="20";
  • 您可以更改lblStatus x座標,以30;