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