Baseado no manual do Illustrator JS, criei o código abaixo. Este código faz exatamente o que você deseja:
- Cria um gradiente com duas paradas de cores: preto e branco
- Repete cinco vezes
- Aplica-o como um traçado ao elemento ativo (selecionado)
Uma versão mais geral pode ser encontrada abaixo da linha.
(1) Primeiro, definimos o número desejado de cores e os tempos desejados para que o gradiente precise iterar:
//Change these
var numberOfColors = 2; //Change this to the desired number of colors in the gradient
var iteration = 5; //Change this to the desired times you want to repeat the gradient
(2) Em seguida, definimos algumas variáveis para serem usadas posteriormente. O GradientInterval
calcula a posição percentual em que cada ponto precisa ser definido. totalNumberofStops
é bastante auto-explicativo. A colors
matriz será usada posteriormente.
//Don't change these
var i,j;
var gradientInterval = 100 / numberOfColors / iteration;
var totalNumberOfStops = numberOfColors * iteration;
var colors = [];
(3) Então podemos definir nossas cores. Você precisa exatamente do número de cores definido no numberOfColors
início. As cores ausentes serão padronizadas para preto.
//Don't forget to push the colors to the colors array!
var color1 = new RGBColor();
color1.red = 0;
color1.green = 0;
color1.blue = 0;
colors.push(color1);
var color2 = new RGBColor();
color2.red = 255;
color2.green = 255;
color2.blue = 255;
colors.push(color2);
(4) Hora de criar nosso gradiente e dar um nome a ele. Agora também podemos definir o tipo.
//Let's initiate the gradient & name it
var newGradient = app.activeDocument.gradients.add();
newGradient.name = "new_gradient";
//Choose the gradient type here
//newGradient.type = GradientType.RADIAL; //Uncomment the one you need
newGradient.type = GradientType.LINEAR; //Uncomment the one you need
(5) Agora, para a parte boa. Primeiro, percorreremos o loop totalNumberOfStops
para que possamos criar cada parada e adicioná-la ao gradiente. Criamos uma nova parada e a definimos mais uma que a última. Agora precisamos obter a cor certa da nossa matriz de cores. Quando o módulo do índice de loop dividido pelo número de cores é 0, sabemos que tivemos todas as cores e precisamos começar novamente, por isso redefinimos nosso índice de cores.
Exemplo Digamos que tenho seis cores que quero repetir 5 vezes. Temos trinta paradas. Passamos por todas as cores usando j
. Quando j
se torna 6, não há mais cores (seis é a sétima cor na matriz, mas existem apenas seis cores na matriz). Portanto, cada múltiplo de seis começa novamente em 0. Caso contrário, passamos para a próxima cor.
Agora só precisamos adicionar a parada final da cor em 100%.
//Now here is where the magic starts
for(i=0;i<totalNumberOfStops;i++){
var newStop = newGradient.gradientStops.add();
newStop.rampPoint = i * gradientInterval;
var modulus = i % numberOfColors;
if(modulus === 0){
j = 0;
}else{
j+=1;
}
newStop.color = colors[j];
}
var lastStop = newGradient.gradientStops.add();
lastStop.rampPoint = 100;
lastStop.color = colors[colors.length-1];
(6) A etapa final: aplicar o gradiente ao golpe. Feito. Festa!
//Apply gradient stroke to selected object
var colorOfGradient = new GradientColor();
colorOfGradient.gradient = newGradient;
var topPath = app.activeDocument.pathItems[0];
topPath.stroked = true;
topPath.strokeWidth = 140;
topPath.strokeColor =colorOfGradient;
(7) Talvez você precise definir o traçado para 'Aplicar gradiente ao longo do traçado' manualmente, porque não encontrei o código para fazer isso.
Este código foi feito especificamente para o seu caso. Uma versão mais generalista pode ser encontrada aqui: http://pastie.org/10921740
Alguns exemplos:
Um gradiente com duas cores, repetindo duas vezes:
Um gradiente com cinco cores, repetindo 10 vezes:
Um gradiente com duas cores, repetindo 50 vezes:
Um gradiente impressionante com 50 cores repetindo 50 vezes: