package { public class CubicEaser { public var slope0:Number = 0; public var slope1:Number = 0; public var splinePointsList:Array; public var targetValue:Number; public var targetTime:Number; public var parametersList:Array; public function CubicEaser(initValue:Number) { init(initValue); } public function init(initValue:Number):void { setTarget(0, initValue, 1, initValue); } public function setTarget(xStart:Number, yStart:*, xTarget:Number, yTarget:Number):Object { // if yStart is null the component will use the y value associated with // xStart given the current parameters, it will also use the same slope so // the easing will be smooth // if yStart is defined the slope there will be zero if (!(yStart is Number)) { yStart = getValue(xStart); slope0 = getDerivative(xStart); } else { slope0 = 0; } splinePointsList = [{x: xStart, y: yStart}, {x: xTarget, y: yTarget}]; doComputations(); targetTime = xTarget; targetValue = yTarget; return {a: parametersList[0].a, b: parametersList[0].b, c: parametersList[0].c, d: parametersList[0].d}; } public function getTargetValue():Number { return targetValue; } public function getTargetTime():Number { return targetTime; } public function getValue(x:Number):Number { var cL:Array = parametersList; var n:int = cL.length; for (var i:int = 0; i=0; k--) { pL[k].d2 = pL[k].d2*pL[k+1].d2 + uL[k]; } var cL:Array = []; var p1:Object, p2:Object, p1d2:Number, p2d2:Number, p1x:Number, p2x:Number, p1y:Number, p2y:Number, h:Number, a:Number, b:Number, c:Number, d:Number; for (i=0; i=0; k--) { pL[k].d2 = pL[k].d2*pL[k+1].d2 + uL[k]; } var cL = []; for (var i=0; ib.x) return 1; else return 0; };*/ }