2012-05-25 60 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;