我搜索了stackoverflow和adobe社区,找到了答案。我无法弄清楚,如何在Indesign中获取所选对象的颜色。
我现在知道我需要检查它是一个色板还是添加了正常颜色。但我不知道如何在每种情况下将CMYK中的颜色分开。
非常感谢任何帮助!
答案 0 :(得分:2)
对象的fillColor
始终报告为Swatch
,即使它不在“色板”列表中也是如此。要执行的第一个测试是Color
;您可以使用instanceof
或hasOwnProperty
。下一个合理的测试是色彩空间是否为CMYK。
评论中提到的Gradient
稍微复杂一些。它包含gradientStops
列表,每个列表都有stopColor
(简单颜色或混合链接)和位置。如果它是一种简单的颜色,您可以像使用普通填充一样检索其值。
if (app.documents.length && app.selection.length >= 1 && app.selection[0].hasOwnProperty('fillColor'))
{
swatch = app.selection[0].fillColor;
if (swatch instanceof Color &&
swatch.space == ColorSpace.CMYK)
alert ("color: "+swatch.colorValue.join(','));
else if (swatch instanceof Gradient)
{
list = [];
for (i=0; i<swatch.gradientStops.length; i++)
if (swatch.gradientStops[i].stopColor instanceof Color)
list.push (i+' = '+swatch.gradientStops[i].stopColor.colorValue.join(','));
else
list.push (i+' = ?');
alert ("gradient:\r"+list.join('\r'));
}
}