在 Actionscript 3.0 中,Color类有一个名为interpolateColor的方法。这对我来说似乎很奇怪,但该方法采用两个无符号整数作为颜色,而不是两个 Color 实例。此外,它为结果颜色返回一个无符号整数。无论如何,我在 API 中看不到任何用于将 Color 转换为无符号整数或简单地在 Color 的两个实例之间进行插值的东西。是否可以在 Color 的两个实例之间进行插值,而无需自己编写代码将它们转换为无符号整数?
4 回答
也许有点晚了,我只是偶然来到这个页面,但是,我在调整图像大小时遇到了类似的插值颜色问题,最后我发现最好的解决方案是使用 Bicubic 进行 2D 转换和 Hermite 进行 1D . 看看吧http://www.yoambulante.com/en/labs/interpolation.php干杯!
这有点不方便,但看起来将其转换为数字是唯一的方法。这是一篇关于它的帖子,其中包含以下代码:
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;
}
Flash 播放器中的所有颜色都被视为无符号整数。Color 类特定于 Flash IDE 并扩展了 ColorTransform。http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/fl/motion/Color.html#propertySummary
因此,在您的情况下,您需要做的就是使用 Color 类的“.color”属性。例如,要获得实际颜色,或者只使用“interpolateTransform”函数,而不是从 ColorTransform 到 ColorTranform。
你不能使用 ColorTransform 实例吗?您从 instanceMovieClip.transform.colorTransorm 获得 colorTransfrom 然后用 Color.interpolateTransform 插值 colorTransofrm ?
我认为我不明白您要实现的目标(为什么需要插入两个颜色实例?而不是颜色(整数)或颜色变换)?