2012-05-25 1 views
0

Я создал свой первый эффект анимации в flex 4. Его очень простая анимация в моем настраиваемом компоненте, который перемещает компонент метки слева направо налево 3-5 раз, а затем постепенно исчезает.Flex 4 - Проблема с дрожанием анимации

Все прекрасно работает, но проблема в том, что когда я запускаю анимацию в первый раз, она воспроизводит отрывистую анимацию и совершенную гладкость после подопечных. Я не знаю, почему.

Может кто-нибудь сказать, что случилось с этим?

Это полный исходный код моего настраиваемого компонента. После добавления его на сцену вызов showProgressEffect() будет воспроизводить анимацию.

Обратите внимание, что я сделал ярлык «cacheAsBitmap», чтобы избежать мерцания при перемещении метки и вызова метода stop() перед воспроизведением() каждой из анимаций/эффектов.

<?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;

 Смежные вопросы

  • Нет связанных вопросов^_^