Na podstawie instrukcji JS programu Illustrator opracowałem poniższy kod. Ten kod robi dokładnie to, co chcesz:
- Tworzy gradient z dwoma punktami przejścia koloru: czarnym i białym
- Powtarza to pięć razy
- Stosuje go jako obrys do aktywnego (wybranego) elementu
Bardziej ogólną wersję można znaleźć poniżej linii.
(1) Najpierw ustawiamy pożądaną liczbę kolorów i żądane czasy iteracji gradientu:
//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) Następnie ustawiamy niektóre zmienne do późniejszego użycia. GradientInterval
Oblicza pozycję procentowy co wymaga punktu do ustawienia na. totalNumberofStops
jest dość oczywiste. colors
Tablica będzie później wykorzystane.
//Don't change these
var i,j;
var gradientInterval = 100 / numberOfColors / iteration;
var totalNumberOfStops = numberOfColors * iteration;
var colors = [];
(3) Następnie możemy zdefiniować nasze kolory. Potrzebujesz dokładnie tyle kolorów, ile ustawiono numberOfColors
na początku. Brakujące kolory będą domyślnie czarne.
//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) Czas stworzyć nasz gradient i nadać mu nazwę. Możemy również teraz ustawić typ.
//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) Teraz dobra część. Najpierw zapętlimy nad totalNumberOfStops
, abyśmy mogli utworzyć każdy przystanek i dodać go do gradientu. Tworzymy nowy przystanek i ustawiamy go o jeden krok dalej niż ostatni. Teraz musimy uzyskać odpowiedni kolor z naszej palety kolorów. Kiedy moduł indeksu pętli podzielony przez liczbę kolorów wynosi 0, wiemy, że mieliśmy każdy kolor i musimy zacząć od nowa, więc resetujemy nasz indeks kolorów.
Przykład Powiedz, że mam sześć kolorów, które chcę zapętlić 5 razy. Mamy trzydzieści przystanków. Używamy pętli nad wszystkimi kolorami j
. Kiedy j
staje się 6, nie ma już kolorów (sześć to siódmy kolor w tablicy, ale jest tylko sześć kolorów w tablicy). Tak więc każda wielokrotność szóstki zaczynamy od 0. W przeciwnym razie przechodzimy do następnego koloru.
Teraz musimy tylko dodać końcowy kolor do 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) Ostatni krok: zastosowanie gradientu do obrysu. Gotowy. Przyjęcie!
//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) Może być konieczne ręczne ustawienie obrysu „Zastosuj gradient wzdłuż obrysu”, ponieważ nie znalazłem kodu, aby to zrobić.
Ten kod został stworzony specjalnie dla twojego przypadku. Bardziej ogólną wersję można znaleźć tutaj: http://pastie.org/10921740
Kilka przykładów:
Gradient w dwóch kolorach, powtarzany dwukrotnie:
Gradient w pięciu kolorach, powtarzany 10 razy:
Gradient w dwóch kolorach, powtarzający się 50 razy:
Ogromny gradient z 50 kolorami powtarzającymi się 50 razy: