2011-12-29 53 views
0

我对javascript很陌生,我正在编写一个脚本来查找指定填充颜色的所有pathItems,并将它们更改为另一种填充颜色。这必须在不使用色板的情况下以RGB或十六进制完成。到目前为止,我已经整理了一些我发现的其他脚本,但是我遇到了很多错误。这是我到目前为止:使用Javascript在Illustrator中更改颜色

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

我需要回答这个问题,但现有答案不完整。这是一个完整的工作解决方案。您可以指定“from”RGB和“to”RGB颜色,并调用fillRGBColor获取需要更改的颜色。

下一步是找出如何为超过1个Illustrator文件:)

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); 
自动化此脚本