1 package flare.animate.interpolate
3 import flash.geom.Rectangle;
6 * Interpolator for <code>flash.geom.Rectangle</code> values.
8 public class RectangleInterpolator extends Interpolator
10 private var _startX:Number, _startY:Number;
11 private var _startW:Number, _startH:Number;
12 private var _rangeX:Number, _rangeY:Number;
13 private var _rangeW:Number, _rangeH:Number;
15 private var _cur:Rectangle;
18 * Creates a new RectangleInterpolator.
19 * @param target the object whose property is being interpolated
20 * @param property the property to interpolate
21 * @param start the starting rectangle value to interpolate from
22 * @param end the target re3ctangle value to interpolate to
24 public function RectangleInterpolator(target:Object, property:String,
25 start:Object, end:Object)
27 super(target, property, start, end);
31 * Initializes this interpolator.
32 * @param start the starting value of the interpolation
33 * @param end the target value of the interpolation
35 protected override function init(start:Object, end:Object) : void
37 var e:Rectangle = Rectangle(end), s:Rectangle = Rectangle(start);
38 if (_cur == null || _cur == s || _cur == e)
45 _rangeX = e.x - _startX;
46 _rangeY = e.y - _startY;
47 _rangeW = e.width - _startW;
48 _rangeH = e.height - _startH;
52 * Calculate and set an interpolated property value.
53 * @param f the interpolation fraction (typically between 0 and 1)
55 public override function interpolate(f:Number) : void
57 _cur.x = _startX + f * _rangeX;
58 _cur.y = _startY + f * _rangeY;
59 _cur.width = _startW + f * _rangeW;
60 _cur.height = _startH + f * _rangeH;
61 _prop.setValue(_target, _cur);
64 } // end of class RectangleInterpolator