-
Notifications
You must be signed in to change notification settings - Fork 56
Expand file tree
/
Copy pathRandom Interpolation.jsx
More file actions
44 lines (41 loc) 路 4.68 KB
/
Copy pathRandom Interpolation.jsx
File metadata and controls
44 lines (41 loc) 路 4.68 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
var keyState = ScriptUI.environment.keyboardState; //褋薪懈屑邪械屑 锌芯谢芯卸械薪懈械 胁褋械褏 泻谢邪胁懈褕 泻谢邪胁懈邪褌褍褉褘 薪邪 屑芯屑械薪褌 薪邪褔邪谢邪 褉邪斜芯褌褘 褋泻褉懈锌褌邪
function getRandomInt(min, max) { //褋芯蟹写邪械屑 褎褍薪泻褑懈褞, 胁芯蟹胁褉邪褖邪褞褖褍褞 褉邪薪写芯屑薪芯械 蟹薪邪褔械薪懈械 屑械卸写褍 min 懈 max
return (Math.random() * (max - min)) + min; //褎褍薪泻褑懈褟 Math.random() 胁芯蟹胁褉邪褖邪械褌 褉邪薪写芯屑薪芯械 褔懈褋谢芯 屑械卸写褍 [0, 1)
}
app.beginUndoGroup("Random Speed And Influence"); //芯褌泻褉褘胁邪械屑 谐褉褍锌锌褍 芯褌屑械薪褘. 袙褋械, 褔褌芯 写械谢邪械褌 褋泻褉懈锌褌, 芯褌屑械薪褟械褌褋褟 芯写薪懈屑 薪邪卸邪褌懈械屑
var curComp = app.project.activeItem; //褌械泻褍褖邪褟 泻芯屑锌芯蟹懈褑懈褟
var selProps = curComp.selectedProperties; //胁褋械 胁褘斜褉邪薪薪褘械 褋胁芯泄褋褌胁邪 褌械泻褍褖械泄 泻芯屑锌芯蟹懈褑懈懈
var speedRange = 1000; //屑邪泻褋懈屑邪谢褜薪芯械 蟹薪邪褔械薪懈械 褋泻芯褉芯褋褌懈
for (var i = 0; i < selProps.length; i++){
if(selProps[i].propertyType === PropertyType.PROPERTY && selProps[i].selectedKeys.length > 0){ //械褋谢懈 褋胁芯泄褋褌胁芯 薪械 泻芯薪械褔薪芯械 (!= PropertyType.PROPERTY) 懈谢懈 械褋谢懈 褍 薪械谐芯 薪械褌 胁褘斜褉邪薪薪褘褏 泻谢褞褔械泄, 屑褘 锌褉芯锌褍褋泻邪械屑 械谐芯
var prop = selProps[i];
for(var y = 0; y < prop.selectedKeys.length; y++){ //蟹邪锌褍褋泻邪械屑 褑懈泻谢 锌芯 胁褘斜褉邪薪薪褘屑 泻谢褞褔邪屑 泻芯薪泻褉械褌薪芯谐芯 褋胁芯泄褋褌胁邪
var influenceIn = getRandomInt(0.1, 100); //锌芯谢褍褔邪械屑 褉邪薪写芯屑薪芯械 蟹薪邪褔械薪懈械 influence
var influenceOut = getRandomInt(0.1, 100);
if (keyState.altKey){ //械褋谢懈 锌褉懈 薪邪褔邪谢械 胁褘锌芯谢薪械薪懈褟 褋泻褉懈锌褌邪 斜褘谢 蟹邪卸邪褌 邪谢褜褌, 斜械褉械屑 褉邪薪写芯屑薪芯械 蟹薪邪褔械薪懈械 懈 写谢褟 inSpeed, 懈 写谢褟 outSpeed
speedIn = getRandomInt(-speedRange, speedRange);
speedOut = getRandomInt(-speedRange, speedRange);
} else if (keyState.shiftKey){ //械褋谢懈 锌褉懈 薪邪褔邪谢械 胁褘锌芯谢薪械薪懈褟 褋泻褉懈锌褌邪 斜褘谢 蟹邪卸邪褌 褕懈褎褌, 斜械褉械屑 褉邪薪写芯屑薪芯械 蟹薪邪褔械薪懈械 褌芯谢褜泻芯 写谢褟 outSpeed
speedIn = 0;
speedOut = getRandomInt(-speedRange, speedRange);
} else if (keyState.ctrlKey || keyState.metaKey){ //械褋谢懈 锌褉懈 薪邪褔邪谢械 胁褘锌芯谢薪械薪懈褟 褋泻褉懈锌褌邪 斜褘谢 蟹邪卸邪褌 Control(win) 懈谢懈 Command(mac), 斜械褉械屑 褉邪薪写芯屑薪芯械 蟹薪邪褔械薪懈械 褌芯谢褜泻芯 写谢褟 inSpeed
speedIn = getRandomInt(-speedRange, speedRange);
speedOut = 0;
} else { //胁芯 胁褋械褏 写褉褍谐懈褏 褋谢褍褔邪褟褏 outSpeed 懈 inSpeed 斜褍写褍褌 褉邪胁薪褘 0
speedIn = 0;
speedOut = 0;
}
var easeIn = new KeyframeEase(speedIn, influenceIn); //褋芯蟹写邪械屑 写胁邪 薪芯胁褘褏 芯斜褗械泻褌邪 KeyframeEase, 胁褋褌褉芯械薪薪芯谐芯 胁 AE, 芯褌写械谢褜薪芯 写谢褟 胁褏芯写褟褖械泄 Interpolation 懈 懈褋褏芯写褟褖械泄
var easeOut = new KeyframeEase(speedOut, influenceOut);
if(! prop.isSpatial && (prop.value.length === 3)) { //械褋谢懈 褋胁芯泄褋褌胁芯 薪械 褟胁谢褟械褌褋褟 锌褉芯褋褌褉邪薪褋褌胁械薪薪褘屑 (spatial) 懈 械谐芯 蟹薪邪褔械薪懈械 (value) 锌褉械写褋褌邪胁谢械薪芯 屑邪褋褋懈胁芯屑 懈蟹 3-褏 褔懈褋械谢
prop.setTemporalEaseAtKey(prop.selectedKeys[y], [easeIn,easeIn,easeIn], [easeOut,easeOut,easeOut]); //薪邪蟹薪邪褔邪械屑 械屑褍 胁褉械屑械薪薪芯泄 懈蟹懈薪谐 薪邪 胁褘斜褉邪薪薪芯屑 泻谢褞褔械 懈蟹 屑邪褋褋懈胁芯胁 胁泻谢褞褔邪褞褖懈褏 3 KeyframeEase 芯斜褗械泻褌邪
} else if(! prop.isSpatial && (prop.value.length === 2)) { //械褋谢懈 褋胁芯泄褋褌胁芯 薪械 褟胁谢褟械褌褋褟 锌褉芯褋褌褉邪薪褋褌胁械薪薪褘屑 (spatial) 懈 械谐芯 蟹薪邪褔械薪懈械 (value) 锌褉械写褋褌邪胁谢械薪芯 屑邪褋褋懈胁芯屑 懈蟹 2-褏 褔懈褋械谢
prop.setTemporalEaseAtKey(prop.selectedKeys[y], [easeIn,easeIn], [easeOut,easeOut]); //薪邪蟹薪邪褔邪械屑 械屑褍 胁褉械屑械薪薪芯泄 懈蟹懈薪谐 薪邪 胁褘斜褉邪薪薪芯屑 泻谢褞褔械 懈蟹 屑邪褋褋懈胁芯胁 胁泻谢褞褔邪褞褖懈褏 2 KeyframeEase 芯斜褗械泻褌邪
} else { //械褋谢懈 褝褌芯 锌褉芯褋褌褉邪薪褋褌胁械薪薪芯械 褋胁芯泄褋褌胁芯 懈谢懈 械褋谢懈 械谐芯 蟹薪邪褔械薪懈械 锌褉械写褋褌邪胁谢械薪芯 褔懈褋谢芯屑,
prop.setTemporalEaseAtKey(prop.selectedKeys[y], [easeIn], [easeOut]); //薪邪蟹薪邪褔邪械屑 械屑褍 胁褉械屑械薪薪芯泄 懈蟹懈薪谐 薪邪 胁褘斜褉邪薪薪芯屑 泻谢褞褔械 懈蟹 袦袗小小袠袙袨袙 胁泻谢褞褔邪褞褖懈褏 1 KeyframeEase 芯斜褗械泻褌邪.
//prop.setTemporalEaseAtKey(prop.selectedKeys[y], easeIn, easeOut) - 薪械 胁褘锌芯谢薪懈褌褋褟, 斜褍写械褌 芯褕懈斜泻邪
}
}
}
}
app.endUndoGroup(); //蟹邪泻褉褘胁邪械屑 谐褉褍锌锌褍 芯褌屑械薪褘