Flash Actionscript 3.0颜色插值问题

Flash Actionscript 3.0颜色插值问题,flash,actionscript-3,colors,interpolation,Flash,Actionscript 3,Colors,Interpolation,在Actionscript 3.0中,Color类有一个名为interpolateColor的方法。这对我来说似乎很奇怪,但该方法对颜色采用两个无符号整数,而不是两个颜色实例。此外,它还为结果颜色返回一个无符号整数。无论如何,我在API中看不到任何将颜色转换为无符号整数或在两个颜色实例之间进行插值的内容。是否可以在两个颜色实例之间进行插值,而无需编写代码将它们转换为无符号整数?这有点不方便,但看起来将其转换为数字是唯一的方法。是一篇关于它的帖子,代码如下: public static funct

在Actionscript 3.0中,Color类有一个名为interpolateColor的方法。这对我来说似乎很奇怪,但该方法对颜色采用两个无符号整数,而不是两个颜色实例。此外,它还为结果颜色返回一个无符号整数。无论如何,我在API中看不到任何将颜色转换为无符号整数或在两个颜色实例之间进行插值的内容。是否可以在两个颜色实例之间进行插值,而无需编写代码将它们转换为无符号整数?

这有点不方便,但看起来将其转换为数字是唯一的方法。是一篇关于它的帖子,代码如下:

public static function interpolateColor(fromColor:uint, toColor:uint, progress:Number):uint
{
    var q:Number = 1-progress;
    var fromA:uint = (fromColor >> 24) & 0xFF;
    var fromR:uint = (fromColor >> 16) & 0xFF;
    var fromG:uint = (fromColor >>  8) & 0xFF;
    var fromB:uint =  fromColor        & 0xFF;

    var toA:uint = (toColor >> 24) & 0xFF;
    var toR:uint = (toColor >> 16) & 0xFF;
    var toG:uint = (toColor >>  8) & 0xFF;
    var toB:uint =  toColor        & 0xFF;

    var resultA:uint = fromA*q + toA*progress;
    var resultR:uint = fromR*q + toR*progress;
    var resultG:uint = fromG*q + toG*progress;
    var resultB:uint = fromB*q + toB*progress;
    var resultColor:uint = resultA << 24 | resultR << 16 | resultG << 8 | resultB;
    return resultColor;  
}
公共静态函数插值颜色(fromColor:uint,toColor:uint,progress:Number):uint
{
变量q:数量=1-进度;
变量fromA:uint=(fromColor>>24)&0xFF;
变量fromR:uint=(fromColor>>16)&0xFF;
变量fromguint=(fromColor>>8)&0xFF;
var fromB:uint=fromColor&0xFF;
变量toA:uint=(toColor>>24)&0xFF;
变量:uint=(toColor>>16)和0xFF;
变量toG:uint=(toColor>>8)&0xFF;
变量toB:uint=toColor&0xFF;
var结果:uint=从A*q+到A*progress;
var resultR:uint=fromR*q+toR*progress;
var resultG:uint=fromgq+toG*进度;
var resultB:uint=fromB*q+toB*progress;

var resultColor:uint=resultAflash player中的所有颜色都被视为无符号整数。颜色类特定于flash IDE并扩展了ColorTransform


因此,在您的情况下,您需要做的就是使用颜色类的“.color”属性。例如,获取实际颜色,或者只使用“interpolateTransform”函数,它从ColorTransform转换到ColorTransform。

您不能使用ColorTransform实例吗? 从instanceMovieClip.transform.ColorTransform获取ColorTransform,然后使用Color.interpolateTransform插值ColorTransform


我想我不明白您想要实现什么(为什么需要插值两个颜色实例?而不是颜色(int)或颜色变换)?

可能有点晚了,我只是偶然来到这一页,但在调整图像大小时,我遇到了类似的插值颜色问题,最后我找到的最佳解决方案是使用双三次变换进行2D变换,使用Hermite进行1D变换。看看吧,干杯