我不认为您可以将对象的颜色偏移更改为 CMYK,尽管您可以编写一个函数来在 RGB 和 CMYK 之间进行转换。附带说明一下,CMYK 主要用于印刷,最好坚持使用 RGB。这里要说的是如何在两者之间进行转换。
RGB 转 CMYK
RGB中每个值的范围是 0 到 255,CMYK中每个值的范围是 0 到 1。所以我们需要缩放 RGB 值,使它们落在 0 到 1 的范围内。
R' = R / 255
G' = G / 255
B' = B / 255
CMYK中的K表示黑色的量,使用R'、G'和B'计算
K = 1 - max(R', G', B')
其他颜色计算如下
C = (1 - R' - K) / (1 - K)
M = (1 - G' - K) / (1 - K)
Y = (1 - B' - K) / (1 - K)
示例类:
import flash.display.MovieClip;
public class ConvertColors extends MovieClip {
public var K:Number = 0.0;
public var C:Number = 0.0;
public var M:Number = 0.0;
public var Y:Number = 0.0;
public function convertToCMYK(R:int, G:int, B:int):void {
var Rprime:Number = R/255;
var Gprime:Number = G/255;
var Bprime:Number = B/255;
this.K = 1 - Math.max( Rprime, Math.max( Gprime, Bprime));
this.C = (1 - Rprime - K)/(1 - K);
this.M = (1 - Gprime - K)/(1 - K);
this.Y = (1 - Bprime - K)/(1 - K);
}
}
CMYK 转 RGB
RGB范围从 0 到 255
R = 255 * (1 - C) * (1 - K)
G = 255 * (1 - M) * (1 - K)
B = 255 * (1 - Y) * (1 - K)
示例类:
import flash.display.MovieClip;
public class ConvertColors extends MovieClip {
public var R:int = 0;
public var G:int = 0;
public var B:int = 0;
public function convertToRGB(K:Number, C:Number, M:Number, Y:Number):void {
var Rnum:Number = 0.0;
var Gnum:Number = 0.0;
var Bnum:Number = 0.0;
Rnum = 255 * (1 - C) * (1 - K);
Gnum = 255 * (1 - M) * (1 - K);
Bnum = 255 * (1 - Y) * (1 - K);
this.R = Math.round(Rnum);
this.G = Math.round(Gnum);
this.B = Math.round(Bnum);
}
}