На основі посібника Illustrator JS я придумав код нижче. Цей код робить саме те, що ви хочете:
- Створює градієнт з двома кольоровими зупинками: чорним і білим
- Повторюється це п’ять разів
- Застосовує його як обведення до активного (вибраного) елемента
Більш загальну версію можна знайти під рядком.
(1) Спочатку ми встановлюємо потрібну кількість кольорів та бажаний час, коли градієнт повинен ітератувати:
//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) Потім ми встановлюємо деякі змінні, які будуть використані пізніше. GradientInterval
Обчислює процентне положення кожної потреби точка буде встановлена на рівні. totalNumberofStops
є досить зрозумілим. colors
Масив буде використовуватися в подальшому.
//Don't change these
var i,j;
var gradientInterval = 100 / numberOfColors / iteration;
var totalNumberOfStops = numberOfColors * iteration;
var colors = [];
(3) Тоді ми можемо визначити наші кольори. Вам потрібно рівно стільки кольорів, скільки встановлено numberOfColors
на початку. Відсутні кольори за замовчуванням - чорні.
//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) Час створити наш градієнт і дати йому ім’я. Тепер ми також можемо встановити тип.
//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) Тепер на хорошу частину. Спочатку ми переведемо цикл, totalNumberOfStops
щоб ми могли створити кожну зупинку і додати її до градієнта. Ми створюємо нову зупинку і встановлюємо її далі, ніж останню. Тепер нам потрібно отримати потрібний колір з нашого масиву кольорів. Коли модуль індексу циклу, поділений на кількість кольорів, дорівнює 0, ми знаємо, що у нас був кожен колір, і нам потрібно почати заново, тому скидаємо індекс кольорів.
Приклад Скажіть, що у мене є шість кольорів, які я хочу петлю 5 разів. У нас тридцять зупинок. Ми перев'язуємо всі кольори за допомогою j
. Коли j
стає 6, кольорів більше немає (шість - це сьомий колір у масиві, але в масиві є лише шість кольорів). Отже кожен кратний шість починаємо заново з 0. Ще ми просто переходимо до наступного кольору.
Тепер нам потрібно лише додати кінцеву зупинку кольору на 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) Заключний крок: нанесення градієнта на обведення. Зроблено. Вечірка!
//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) Можливо, вам доведеться встановити обведення на "Застосувати градієнт уздовж обведення" вручну, тому що я не знайшов код для цього.
Цей код був розроблений спеціально для вашої справи. Більш загальну версію можна знайти тут: http://pastie.org/10921740
Деякі приклади:
Градієнт з двома кольорами, повторюючись двічі:
Градієнт з п'ятьма кольорами, повторюючи 10 разів:
Градієнт з двома кольорами, повторюючи 50 разів:
Величезний градієнт з 50 кольорами, які повторюються 50 разів: