📄 colorinterpolator.as
字号:
package flare.animate.interpolate
{
/**
* Interpolator for color (<code>uint</code>) values.
*/
public class ColorInterpolator extends Interpolator
{
private var _start:uint;
private var _end:uint;
/**
* Creates a new ColorInterpolator.
* @param target the object whose property is being interpolated
* @param property the property to interpolate
* @param start the starting color value to interpolate from
* @param end the target color value to interpolate to
*/
public function ColorInterpolator(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 = uint(start);
_end = uint(end);
}
/**
* Calculate and set an interpolated property value.
* @param f the interpolation fraction (typically between 0 and 1)
*/
public override function interpolate(f:Number) : void
{
// we'll do all the work here to avoid the overhead of
// extra method calls (rather than call Colors.interpolate)
var a1:uint, a2:uint, r1:uint, r2:uint,
g1:uint, g2:uint, b1:uint, b2:uint;
// get color components
a1 = (_start >> 24) & 0xFF; a2 = (_end >> 24) & 0xFF;
r1 = (_start >> 16) & 0xFF; r2 = (_end >> 16) & 0xFF;
g1 = (_start >> 8) & 0xFF; g2 = (_end >> 8) & 0xFF;
b1 = _start & 0xff; b2 = _end & 0xFF;
// interpolate the color components
a1 += f*(a2-a1); r1 += f*(r2-r1);
g1 += f*(g2-g1); b1 += f*(b2-b1);
// recombine into final color
a1 = ((a1 & 0xFF) << 24) | ((r1 & 0xFF) << 16) |
((g1 & 0xFF) << 8) | (b1 & 0xFF);
// update the property value
_prop.setValue(_target, a1);
}
} // end of class ColorInterpolator
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -