Basado en el manual de Illustrator JS, se me ocurrió el siguiente código. Este código hace exactamente lo que quieres:
- Crea un degradado con dos paradas de color: blanco y negro.
- Lo repite cinco veces
- Se aplica como un trazo al elemento activo (seleccionado)
Una versión más generalista se puede encontrar debajo de la línea.
(1) Primero establecemos el número deseado de colores y los tiempos deseados que el gradiente necesita 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) Luego establecemos algunas variables para su uso posterior. El GradientInterval
calcula la posición porcentaje necesidades de cada punto que se va a. totalNumberofStops
Es bastante autoexplicativo. La colors
matriz se usará más tarde.
//Don't change these
var i,j;
var gradientInterval = 100 / numberOfColors / iteration;
var totalNumberOfStops = numberOfColors * iteration;
var colors = [];
(3) Entonces podemos definir nuestros colores. Necesita exactamente tantos colores como se configuraron numberOfColors
al principio. Los colores que faltan serán predeterminados a negro.
//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 crear nuestro gradiente y darle un nombre. Ahora también podemos establecer el 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) Ahora para la buena parte. Primero recorreremos el totalNumberOfStops
para que podamos crear cada parada y agregarla al gradiente. Creamos una nueva parada y la configuramos una más lejos que la última. Ahora necesitamos obtener el color correcto de nuestra matriz de colores. Cuando el módulo del índice de bucle dividido por el número de colores es 0, sabemos que hemos tenido todos los colores y necesitamos comenzar de nuevo, por lo que restablecemos nuestro índice de color.
Ejemplo Digamos que tengo seis colores que quiero repetir 5 veces. Tenemos treinta paradas. Repetimos todos los colores usando j
. Cuando se j
convierte en 6, no hay más colores (seis es el séptimo color en la matriz, pero solo hay seis colores en la matriz). Entonces, cada múltiplo de seis comenzamos de nuevo en 0. De lo contrario, simplemente pasamos al siguiente color.
Ahora solo necesitamos agregar la parada de color final al 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) El último paso: aplicar el gradiente al trazo. Hecho. ¡Fiesta!
//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) Es posible que deba configurar el trazo en 'Aplicar degradado a lo largo del trazo' manualmente, porque no he encontrado el código para hacerlo.
Este código fue hecho específicamente para su caso. Una versión más generalista se puede encontrar aquí: http://pastie.org/10921740
Algunos ejemplos:
Un degradado con dos colores, que se repite dos veces:
Un degradado con cinco colores, que se repite 10 veces:
Un degradado con dos colores, que se repite 50 veces:
Un gradiente enorme con 50 colores que se repite 50 veces: