Sulla base del manuale di Illustrator JS ho escogitato il codice seguente. Questo codice fa esattamente quello che vuoi:
- Crea una sfumatura con due interruzioni di colore: bianco e nero
- Lo ripete cinque volte
- Lo applica come tratto all'elemento attivo (selezionato)
Una versione più generica è disponibile sotto la riga.
(1) Innanzitutto impostiamo il numero desiderato di colori e i tempi desiderati per ripetere il gradiente:
//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) Quindi impostiamo alcune variabili da utilizzare in seguito. La GradientInterval
calcola la posizione percentuale ogni necessità punto da fissare a. totalNumberofStops
è abbastanza autoesplicativo. L' colors
array verrà utilizzato in seguito.
//Don't change these
var i,j;
var gradientInterval = 100 / numberOfColors / iteration;
var totalNumberOfStops = numberOfColors * iteration;
var colors = [];
(3) Quindi possiamo definire i nostri colori. Hai bisogno esattamente di tutti i colori impostati numberOfColors
all'inizio. I colori mancanti verranno automaticamente impostati sul nero.
//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) Tempo per creare il nostro gradiente e dargli un nome. Ora possiamo anche impostare il 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) Ora per la parte buona. Per prima cosa totalNumberOfStops
eseguiremo il ciclo in modo da poter creare ogni fermata e aggiungerla al gradiente. Creiamo una nuova fermata e la impostiamo oltre la precedente. Ora dobbiamo ottenere il colore giusto dalla nostra gamma di colori. Quando il modulo dell'indice del loop diviso per il numero di colori è 0, sappiamo che abbiamo avuto tutti i colori e dobbiamo ricominciare, quindi ripristiniamo il nostro indice di colore.
Esempio Dire che ho sei colori che voglio ripetere 5 volte. Abbiamo trenta fermate. Passiamo in rassegna tutti i colori usando j
. Quando j
diventa 6 non ci sono più colori (sei è il settimo colore nell'array ma ci sono solo sei colori nell'array). Quindi ogni multiplo di sei ricominciamo da 0. Altrimenti passiamo al colore successivo.
Ora dobbiamo solo aggiungere il colore finale 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) Il passaggio finale: applicare il gradiente al tratto. Fatto. 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) Potrebbe essere necessario impostare manualmente il tratto su "Applica gradiente lungo il tratto", perché non ho trovato il codice per farlo.
Questo codice è stato creato appositamente per il tuo caso. Una versione più generica è disponibile qui: http://pastie.org/10921740
Qualche esempio:
Un gradiente con due colori, ripetendo due volte:
Un gradiente con cinque colori, ripetendo 10 volte:
Un gradiente con due colori, ripetendo 50 volte:
Un gradiente enorme con 50 colori che si ripetono 50 volte: