gpt4 book ai didi

javascript - 返回值返回为未定义

转载 作者:行者123 更新时间:2023-12-02 23:18:25 24 4
gpt4 key购买 nike

我正在尝试为 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["处未定义屋顶复合 Material "])。添加 else/if 语句后,它每次都会给我警报。

最佳答案

请查看 MDN 的 try catch block 规范。 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/try...catch .

您必须记住,在 try catch block 之后不会执行任何代码。

我建议您这样更改代码:

try {
newCMYKColor.cyan = stockColors[stockColor][0];
newCMYKColor.magenta = stockColors[stockColor][1];
newCMYKColor.yellow = stockColors[stockColor][2];
newCMYKColor.black = stockColors[stockColor][3];

return newCMYKColor;
} catch (e) {
newCMYKColor.cyan = 0;
newCMYKColor.magenta = 0;
newCMYKColor.yellow = 0;
newCMYKColor.black = 0;

return newCMYKColor;
}

或者在最后使用finally block (finally中的代码总是执行之前发生的事情)。

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;
} finaly {
return newCMYKColor;
}

关于javascript - 返回值返回为未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57058303/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com