1

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

4

4 回答 4

1

也许有点晚了,我只是偶然来到这个页面,但是,我在调整图像大小时遇到​​了类似的插值颜色问题,最后我发现最好的解决方案是使用 Bicubic 进行 2D 转换和 Hermite 进行 1D . 看看吧http://www.yoambulante.com/en/labs/interpolation.php干杯!

于 2010-10-04T21:20:14.627 回答
1

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

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;  
}
于 2009-08-29T03:42:49.617 回答
1

Flash 播放器中的所有颜色都被视为无符号整数。Color 类特定于 Flash IDE 并扩展了 ColorTransform。http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/fl/motion/Color.html#propertySummary

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

于 2009-08-29T03:45:50.653 回答
0

你不能使用 ColorTransform 实例吗?您从 instanceMovieClip.transform.colorTransorm 获得 colorTransfrom 然后用 Color.interpolateTransform 插值 colorTransofrm ?

我认为我不明白您要实现的目标(为什么需要插入两个颜色实例?而不是颜色(整数)或颜色变换)?

于 2009-08-29T18:33:02.563 回答