package flare.animate.interpolate { /** * Interpolator for arbitrary Object values. Simply swaps the * initial value for the end value for interpolation fractions greater * than or equal to 0.5. */ public class ObjectInterpolator extends Interpolator { private var _start:Object; private var _end:Object; /** * Creates a new ObjectInterpolator. * @param target the object whose property is being interpolated * @param property the property to interpolate * @param start the starting object value to interpolate from * @param end the target object value to interpolate to */ public function ObjectInterpolator(target:Object, property:String, start:Object, end:Object) { super(target, property, start, end); } /** * Initializes this interpolator. * @param start the starting value of the interpolation * @param end the target value of the interpolation */ protected override function init(start:Object, end:Object) : void { _start = start; _end = end; } /** * Calculate and set an interpolated property value. This method sets * the target object's property to the starting value if the * interpolation fraction is less than 0.5 and to the ending value if * the fraction is greather than or equal to 0.5. * @param f the interpolation fraction (typically between 0 and 1) */ public override function interpolate(f:Number) : void { _prop.setValue(_target, f < 0.5 ? _start : _end); } } // end of class ObjectInterpolator }