Illustrator JavaScript只适用于一次赢得';t形开关

Illustrator JavaScript只适用于一次赢得';t形开关,javascript,adobe-illustrator,extendscript,Javascript,Adobe Illustrator,Extendscript,我正在写一个剧本,改变一个棍子手的胳膊和腿的颜色。一旦“他”被选中,它实际上只是反映了颜色: //Declare and initialize variables var msgType = ""; var app; var docRef = app.activeDocument; var testColor = docRef.swatches.getByName("CMYK Green"); var leftColor = docRef.swatches.getByName("LeftColo

我正在写一个剧本,改变一个棍子手的胳膊和腿的颜色。一旦“他”被选中,它实际上只是反映了颜色:

//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;
        }

    }
}
//声明和初始化变量
var msgType=“”;
var-app;
var docRef=app.activeDocument;
var testColor=docRef.swatches.getByName(“CMYK绿色”);
var leftColor=docRef.swatches.getByName(“leftColor”);
var rightColor=docRef.swatches.getByName(“rightColor”);
函数sameColor(CMYKColor1、CMYKColor2){
“严格使用”;
var isTheSameColor;
如果((CMYKColor1.cyan==CMYKColor2.cyan)&&(CMYKColor1.magenta==CMYKColor2.magenta)&&(CMYKColor1.yellow==CMYKColor2.yellow)&&(CMYKColor1.black==CMYKColor2.black)){
isTheSameColor=true;
}否则{
isTheSameColor=false;
}
返回相同的颜色;
}
//检查Illustrator中是否打开了文档。
如果(app.documents.length>0){
var mySelection=app.activeDocument.selection;
var指数;
//循环浏览所有选定对象
对于(索引=0;索引

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

经过大量的挠头/调试后,发现它改变了CMYK值,使之不完全相同(相差很小)

更改如下:

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

现在一切正常

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