//只支持CMYK的 原理 第一个渐变 记录 渐变起始的颜色值 来选择渐变
var doc = app.activeDocument;
var rc = 20;
var shapes = doc.selection;
if(shapes!=null&&shapes.length==1&&shapes[0].fillColor.typename=="GradientColor"){
var color = shapes[0].fillColor.gradient.gradientStops[0].color;
var date =
{
c:getArray(color.cyan,rc),
m:getArray(color.magenta,rc),
y:getArray(color.yellow,rc),
k:getArray(color.black,rc),
max:10000//表示 单文档数量 小于100000的时候 才运行
}
main(date);
}else{
alert('请选择一个渐变');
}
function main(date){
//如果文档的 路径对象 0~6000之间 就执行
if (doc.pathItems.length > 0 && doc.pathItems.length < date.max) {
var gradientColorCount = 0;
var gradientList = new Array();
var err = 0;
for (i = 0; i < doc.pathItems.length; i++) {//循环开始修改颜色
var p = doc.pathItems[i];
//判断 p对象 填充类型是渐变
if (p.fillColor.typename == "GradientColor") {
gradientColorCount++;
if(selectShape(p,1,date)){
gradientList.push(p);
}
}
}
//提示设计 是否有渐变描边
if (gradientColorCount > 0) {
for(i = 0;i<gradientList.length;i++){
gradientList[i].selected = true;
}
}
}
}
function getArray(c,rc){
var arr = new Array();
if(c-rc>=0){
arr[0] = c-rc
}else{
arr[0] = 0
}
if(c+rc<=100){
arr[1] = c+rc
}else{
arr[1] = 100
}
return arr;
}
function selectShape(a,b,date){
//var len = a.fillColor.gradient.gradientStops.length;
var len= 1;
for (k = 0; k < len; k++) {
if (b == 1) {
if (a.fillColor.gradient.gradientStops[k].color.typename.indexOf("SpotColor") == -1) {
var color = a.fillColor.gradient.gradientStops[k].color;
if(color.cyan>=date.c[0]&&color.cyan<=date.c[1]){
if(color.magenta>=date.m[0]&&color.magenta<=date.m[1]){
if(color.yellow>=date.y[0]&&color.yellow<=date.y[1]){
if(color.black>=date.k[0]&&color.black<=date.k[1]){
return true;
}
}
}
}
}
} else {
if (a.strokeColor.gradient.gradientStops[k].color.typename.indexOf("SpotColor") == -1) {
var color = a.strokeColor.gradient.gradientStops[k].color;
if(color.cyan>=date.c[0]&&color.cyan<=date.c[1]){
if(color.magenta>=date.m[0]&&color.magenta<=date.m[1]){
if(color.yellow>=date.y[0]&&color.yellow<=date.y[1]){
if(color.black>=date.k[0]&&color.black<=date.k[1]){
return true;
}
}
}
}
}
}
}
return false;
}