【发布时间】:2019-07-16 21:46:32
【问题描述】:
我正在尝试为 Illustrator 编写一个脚本,该脚本将从对象中读取我需要的颜色,然后在需要的地方用该颜色填充模板。它一直返回未定义。我对 Javascript 很陌生,有什么想法我做错了吗?
我尝试以newCMYKColor[stockColor]、newCMYKColor[stockColors] 的身份返回并返回stockColor[newCMYKColor]
convertRoofColorToCMYK = function(stockColor) {
var newCMYKColor = new CMYKColor(),
stockColors = {
BlackPoly: [80, 72, 68, 100],
LightBlue: [100, 43, 0, 30],
DarkBluePoly: [95, 74, 7, 44],
PurplePoly: [82, 98, 0, 12],
GreenPoly: [90, 12, 95, 40],
YellowPoly: [0, 19, 89, 0],
EcruPoly: [6, 13, 41, 4],
OrangePoly: [0, 73, 98, 0],
RedPoly: [7, 100, 82, 26],
GreyPoly: [10, 4, 4, 14],
WhitePoly: [0, 0, 0, 0]
};
try {
newCMYKColor.cyan = stockColors[stockColor][0];
newCMYKColor.magenta = stockColors[stockColor][1];
newCMYKColor.yellow = stockColors[stockColor][2];
newCMYKColor.black = stockColors[stockColor][3];
} catch (e) {
newCMYKColor.cyan = 0;
newCMYKColor.magenta = 0;
newCMYKColor.yellow = 0;
newCMYKColor.black = 0;
}
return newCMYKColor;
};
roofColorCMYK = convertRoofColorToCMYK(Clipboard.roof_color);
if (!roofColorCMYK == undefined) {
if (app.activeDocument.Layers["Tent Pieces"] &&
app.activeDocument.Layers["Tent Pieces"].Layers["Roof Composite"]) {
for (i = 0; i < app.activeDocument.Layers["Tent Pieces"].Layers["Roof Composite"].pathItems.length; i++) {
app.activeDocument.Layers["Tent Pieces"].Layers["Roof Composite"].pathItems[i].fillColor = roofColorCMYK;
} else {
alert("sorry we are not able to fill the tent roof with the " +
Clipboard.roof_color + " color.")
}
在我添加 else/if 语句之前,它告诉我 if (app.activeDocument.Layers["Tent Pieces"] && app.activeDocument.Layers["Tent Pieces"].Layers["Roof Composite"]) 未定义。添加 else/if 语句后,它每次都会给我警报。
【问题讨论】:
-
我认为
!roofColorCMYK == undefined(不是!)条件永远不会是true,因为您正在将您的值转换为真值或假值。而convertRoofColorToCMYK永远不会返回 undefined 因为你总是返回一个值。你能记录下roofColorCMYK的值吗?
标签: javascript adobe return-value adobe-illustrator object-literal