2011-11-03 85 views
0

我使用Flex 4.5为简单的用户界面编程。更改弹性属性

我想添加弹出式缓动动画,特别是Elastic(spark.effects.easing.Elastic)。

有没有办法改变弹性动画的属性?它会来回跳动太多,有没有办法改变这种行为,或者使用其他一些可以提供我需要的选项的缓动动画来模仿这种行为?

示例代码,可以发现:

http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/spark/effects/easing/Elastic.html

感谢

回答

1

你也可以继承的火花松紧自如类,露出一对夫妇更多的自定义变量是这样的:

package 
{ 
    import mx.effects.easing.Elastic; 
    import spark.effects.easing.Elastic; 

    /** Expose some properties on the spark Elastic easer */ 
    public class MyElastic extends spark.effects.easing.Elastic 
    { 
     /** 
     * (Copied from the ASDoc for mx.effects.easing.Elastic.easeout()): 
     * @param b Specifies the initial position of a component. 
     * @param c Specifies the total change in position of the component. 
     * @param d Specifies the duration of the effect, in milliseconds. 
     * @param a Specifies the amplitude of the sine wave. 
     * @param p Specifies the period of the sine wave. 
     */ 
     public var b:Number = 0; 
     public var c:Number = 1; 
     public var d:Number = 1; 
     public var a:Number = 0; 
     public var p:Number = 0; 

     override public function ease(fraction:Number):Number 
     { 
      return mx.effects.easing.Elastic.easeOut(fraction, b, c, d, a, p); 

      // if these properties aren't enough control then you can copy and paste 
      // the code from mx.effects.easing.Ellastic.easeOut() directly into this 
      // overridden method and tweak the code for your needs from there. 
     } 
    } 
} 

如果这些变量不提供您正在查找的控件,那么您可以复制并粘贴mx.effects.eas中的代码将Ellestic.easeOut()转换为MyElastic.ease()并完全控制你需要在那里做的调整。

下面是一个说明该子类的简单示例应用程序:

<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009" 
         xmlns:s="library://ns.adobe.com/flex/spark" 
         xmlns:local="*"> 

    <s:Button click="mover.play()" label="move" x="100" y="50" /> 

    <s:Button id="btn" y="100" x="50" /> 
    <s:Button id="btn2" y="150" x="50" /> 

    <fx:Declarations> 
     <s:Parallel id="mover"> 
      <s:Move target="{btn}" xBy="100"> 
       <s:easer> 
        <s:Elastic /> 
       </s:easer> 
      </s:Move> 
      <s:Move target="{btn2}" xBy="100"> 
       <s:easer> 
        <local:MyElastic a="3" /> 
       </s:easer> 
      </s:Move> 
     </s:Parallel> 
    </fx:Declarations> 

</s:WindowedApplication> 
+0

太感谢你了! :) – ufk