2011-12-29 2 views
0

Я очень новичок в javascript, и я пишу скрипт, чтобы найти все pathItems заданного цвета заливки и изменить их на другой цвет заливки. Это необходимо сделать в RGB или hex без использования образцов. До сих пор я собрал несколько других скриптов, которые я нашел, но у меня много ошибок. Вот что у меня есть до сих пор:Изменение цвета в Illustrator с Javascript

var myDoc =app.activeDocument 
var fillRGBColor = function (pathItem){ 
    var fillColor = new Array(); 
    fillColor[0] = myDoc.pathItem.fillColor.red; 
    fillColor[1] = myDoc.pathItem.fillColor.green; 
    fillColor[2] = myDoc.pathItem.fillColor.blue; 
    return fillColor; 
} 

fillRGBColor(); 
var pathItems = myDoc.pathItems; 
for (i=0; i<pathItems.length; i++){ 
    fillColor[255,255,255] ==fillColor[50,50,50]; 
} 

Спасибо!

ответ

0

Действительно, у вас в вашем скрипте много эров. Глядя на тип ошибок, я предлагаю вам прочитать Adobe Illustrator CS5 Reference: JavaScript или любой учебник по JavaScript.

В любом случае вы можете уменьшить свои ошибки JavaScript по моей модифицированной версии вашего кода.

var fillRGBColor = function (pathItems, r, g, b){ 
    for (var i=0; i < pathItems.length; i++) { 
     pathItems[i].fillColor.red = r; 
     pathItems[i].fillColor.green = g; 
     pathItems[i].fillColor.blue = b; 
    } 
} 

fillRGBColor(app.activeDocument.pathItems, 50, 50, 50); 
1

Мне нужен был тот же вопрос, но существующий ответ был неполным. Вот полное рабочее решение. Вы указываете «от» RGB и «до» цветов RGB и вызываете fillRGBColor столько цветов, которые вам нужно изменить.

Следующий шаг, чтобы выяснить, как автоматизировать этот скрипт для более чем 1 иллюстратор файл :)

var fillRGBColor = function (pathItems, fr,fg,fb,tr,tg,tb){ 
    for (var i=0; i < pathItems.length; i++) { 

     if (pathItems[i].fillColor.red == fr 
      && pathItems[i].fillColor.green == fg 
      && pathItems[i].fillColor.blue == fb) { 
       pathItems[i].fillColor.red = tr; 
       pathItems[i].fillColor.green = tg; 
       pathItems[i].fillColor.blue = tb; 
     } 

    } 
} 

fillRGBColor(app.activeDocument.pathItems, 20, 20, 20, 50, 50, 50);