Actionscript 3.0颜色插值问题

时间:2009-08-29 03:03:00

标签: flash actionscript-3 colors interpolation

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

4 个答案:

答案 0 :(得分:1)

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

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;  
}

答案 1 :(得分:1)

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

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

答案 2 :(得分:1)

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

答案 3 :(得分:0)

你能不能使用ColorTransform实例? 你从instanceMovieClip.transform.colorTransorm得到colorTransfrom然后用Color.interpolateTransform插入colorTransofrm?

我不认为我理解你想要实现的目标(为什么你需要插入两个颜色实例?而不是颜色(整数)或colorTransforms?)