Основываясь на руководстве по 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 раз: