Skip to content

Commit 17bc59a

Browse files
authored
Add files via upload
1 parent 3adea77 commit 17bc59a

File tree

1 file changed

+44
-0
lines changed

1 file changed

+44
-0
lines changed

Random Interpolation.jsx

+44
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
var keyState = ScriptUI.environment.keyboardState; //снимаем положение всех клавиш клавиатуры на момент начала работы скрипта
2+
3+
function getRandomInt(min, max) { //создаем функцию, возвращающую рандомное значение между min и max
4+
return (Math.random() * (max - min)) + min; //функция Math.random() возвращает рандомное число между [0, 1)
5+
}
6+
7+
app.beginUndoGroup("Random Speed And Influence"); //открываем группу отмены. Все, что делает скрипт, отменяется одним нажатием
8+
var curComp = app.project.activeItem; //текущая композиция
9+
var selProps = curComp.selectedProperties; //все выбранные свойства текущей композиции
10+
var speedRange = 1000; //максимальное значение скорости
11+
for (var i = 0; i < selProps.length; i++){
12+
if(selProps[i].propertyType === PropertyType.PROPERTY && selProps[i].selectedKeys.length > 0){ //если свойство не конечное (!= PropertyType.PROPERTY) или если у него нет выбранных ключей, мы пропускаем его
13+
var prop = selProps[i];
14+
for(var y = 0; y < prop.selectedKeys.length; y++){ //запускаем цикл по выбранным ключам конкретного свойства
15+
var influenceIn = getRandomInt(0.1, 100); //получаем рандомное значение influence
16+
var influenceOut = getRandomInt(0.1, 100);
17+
if (keyState.altKey){ //если при начале выполнения скрипта был зажат альт, берем рандомное значение и для inSpeed, и для outSpeed
18+
speedIn = getRandomInt(-speedRange, speedRange);
19+
speedOut = getRandomInt(-speedRange, speedRange);
20+
} else if (keyState.shiftKey){ //если при начале выполнения скрипта был зажат шифт, берем рандомное значение только для outSpeed
21+
speedIn = 0;
22+
speedOut = getRandomInt(-speedRange, speedRange);
23+
} else if (keyState.ctrlKey || keyState.metaKey){ //если при начале выполнения скрипта был зажат Control(win) или Command(mac), берем рандомное значение только для inSpeed
24+
speedIn = getRandomInt(-speedRange, speedRange);
25+
speedOut = 0;
26+
} else { //во всех других случаях outSpeed и inSpeed будут равны 0
27+
speedIn = 0;
28+
speedOut = 0;
29+
}
30+
var easeIn = new KeyframeEase(speedIn, influenceIn); //создаем два новых объекта KeyframeEase, встроенного в AE, отдельно для входящей Interpolation и исходящей
31+
var easeOut = new KeyframeEase(speedOut, influenceOut);
32+
if(! prop.isSpatial && (prop.value.length === 3)) { //если свойство не является пространственным (spatial) и его значение (value) представлено массивом из 3-х чисел
33+
prop.setTemporalEaseAtKey(prop.selectedKeys[y], [easeIn,easeIn,easeIn], [easeOut,easeOut,easeOut]); //назначаем ему временной изинг на выбранном ключе из массивов включающих 3 KeyframeEase объекта
34+
} else if(! prop.isSpatial && (prop.value.length === 2)) { //если свойство не является пространственным (spatial) и его значение (value) представлено массивом из 2-х чисел
35+
prop.setTemporalEaseAtKey(prop.selectedKeys[y], [easeIn,easeIn], [easeOut,easeOut]); //назначаем ему временной изинг на выбранном ключе из массивов включающих 2 KeyframeEase объекта
36+
} else { //если это пространственное свойство или если его значение представлено числом,
37+
prop.setTemporalEaseAtKey(prop.selectedKeys[y], [easeIn], [easeOut]); //назначаем ему временной изинг на выбранном ключе из МАССИВОВ включающих 1 KeyframeEase объекта.
38+
//prop.setTemporalEaseAtKey(prop.selectedKeys[y], easeIn, easeOut) - не выполнится, будет ошибка
39+
}
40+
}
41+
}
42+
}
43+
44+
app.endUndoGroup(); //закрываем группу отмены

0 commit comments

Comments
 (0)