1//////////////////////////////////////////////////////////////////////////////// 2// 3// ADOBE SYSTEMS INCORPORATED 4// Copyright 2004-2007 Adobe Systems Incorporated 5// All Rights Reserved. 6// 7// NOTICE: Adobe permits you to use, modify, and distribute this file 8// in accordance with the terms of the license agreement accompanying it. 9// 10//////////////////////////////////////////////////////////////////////////////// 11 12package mx.effects.easing 13{ 14 15/** 16 * The Sine class defines three easing functions to implement 17 * motion with Flex effect classes, where the motion is defined by 18 * a sine wave. 19 * 20 * For more information, see http://www.robertpenner.com/profmx. 21 */ 22public class Sine 23{ 24 include "../../core/Version.as"; 25 26 //-------------------------------------------------------------------------- 27 // 28 // Class methods 29 // 30 //-------------------------------------------------------------------------- 31 32 /** 33 * The <code>easeIn()</code> method starts motion from zero velocity, 34 * and then accelerates motion as it executes. 35 * 36 * @param t Specifies time. 37 * 38 * @param b Specifies the initial position of a component. 39 * 40 * @param c Specifies the total change in position of the component. 41 * 42 * @param d Specifies the duration of the effect, in milliseconds. 43 * 44 * @return Number corresponding to the position of the component. 45 */ 46 public static function easeIn(t:Number, b:Number, 47 c:Number, d:Number):Number 48 { 49 return -c * Math.cos(t / d * (Math.PI / 2)) + c + b; 50 } 51 52 /** 53 * The <code>easeOut()</code> method starts motion fast, 54 * and then decelerates motion to a zero velocity as it executes. 55 * 56 * @param t Specifies time. 57 * 58 * @param b Specifies the initial position of a component. 59 * 60 * @param c Specifies the total change in position of the component. 61 * 62 * @param d Specifies the duration of the effect, in milliseconds. 63 * 64 * @return Number corresponding to the position of the component. 65 */ 66 public static function easeOut(t:Number, b:Number, 67 c:Number, d:Number):Number 68 { 69 return c * Math.sin(t / d * (Math.PI / 2)) + b; 70 } 71 72 /** 73 * The <code>easeInOut()</code> method combines the motion 74 * of the <code>easeIn()</code> and <code>easeOut()</code> methods 75 * to start the motion from a zero velocity, accelerate motion, 76 * then decelerate to a zero velocity. 77 * 78 * @param t Specifies time. 79 * 80 * @param b Specifies the initial position of a component. 81 * 82 * @param c Specifies the total change in position of the component. 83 * 84 * @param d Specifies the duration of the effect, in milliseconds. 85 * 86 * @return Number corresponding to the position of the component. 87 */ 88 public static function easeInOut(t:Number, b:Number, 89 c:Number, d:Number):Number 90 { 91 return -c / 2 * (Math.cos(Math.PI * t / d) - 1) + b; 92 } 93} 94 95} 96