【问题标题】:Illustrator JavaScript only works once - won't toggleIllustrator JavaScript 只能工作一次 - 不会切换
【发布时间】:2014-06-12 14:27:24
【问题描述】:

我正在编写一个脚本来改变火柴人的胳膊和腿的颜色。一旦选择了“他”,它实际上只是反映了颜色:

//Declare and initialize variables
var msgType = "";
var app;
var docRef = app.activeDocument;
var testColor = docRef.swatches.getByName("CMYK Green");
var leftColor = docRef.swatches.getByName("LeftColor");
var rightColor = docRef.swatches.getByName("RightColor");

function sameColor(CMYKColor1, CMYKColor2) {
    "use strict";
    var isTheSameColor;
    if ((CMYKColor1.cyan === CMYKColor2.cyan) && (CMYKColor1.magenta === CMYKColor2.magenta) && (CMYKColor1.yellow === CMYKColor2.yellow) && (CMYKColor1.black === CMYKColor2.black)) {
        isTheSameColor = true;
    } else {
        isTheSameColor = false;
    }
    return isTheSameColor;
}


// check if a document is open in Illustrator.
if (app.documents.length > 0) {
    var mySelection = app.activeDocument.selection;
    var index;
    // Loop through all selected objects
    for (index = 0; index < mySelection.length; index += 1) {
        // Switch left and right colours
        if (sameColor(mySelection[index].strokeColor, leftColor.color)) {
            mySelection[index].strokeColor = rightColor.color;
        }
        if (sameColor(mySelection[index].strokeColor, rightColor.color)) {
            mySelection[index].strokeColor = leftColor.color;
        }
        if (sameColor(mySelection[index].fillColor, leftColor.color)) {
            mySelection[index].fillColor = rightColor.color;
        }
        if (sameColor(mySelection[index].fillColor, rightColor.color)) {
            mySelection[index].fillColor = leftColor.color;
        }

    }
}

它可以工作,但只能工作一次(即我无法再次切换更改)。如果我撤消更改并重试,它会再次起作用。这是为什么呢?

【问题讨论】:

    标签: javascript adobe-illustrator extendscript


    【解决方案1】:

    经过大量头疼/调试后,发现它正在将 CMYK 值更改为不完全相同(一小部分)。

    更改了以下内容:

    if ((CMYKColor1.cyan === CMYKColor2.cyan) ...
    

    到:

    if ((Math.round(CMYKColor1.cyan) === Math.round(CMYKColor2.cyan)) ... 
    

    现在可以正常使用了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-09
      相关资源
      最近更新 更多