Skip to content

Commit 860ebeb

Browse files
committed
Change KF expression
1 parent 45b679f commit 860ebeb

File tree

1 file changed

+62
-0
lines changed

1 file changed

+62
-0
lines changed

change_KF_value_expression.js

+62
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
//Экспрешн, которые позволяет менять значение одного кейфрейма, с сохранением кривых анимации. Править первые две строчки
2+
3+
myKfNum = 3;//номер кейфрема
4+
myKfNewValue = 180;//новое значение для этого кейфрейма
5+
6+
Array.prototype.linear = function(tMin,tMax,val1,val2)
7+
{
8+
if(arguments.length<4)
9+
return this;
10+
for(var i=0;i<arguments.length;i++)
11+
if(!arguments[i] instanceof Array)
12+
return this;
13+
14+
var newVal = [];
15+
for(var k=0;k<this.length;k++)
16+
if(tMin[k]<=tMax[k])
17+
newVal[k] = linear(this[k],tMin[k],tMax[k],val1[k],val2[k]);
18+
else
19+
newVal[k] = linear(this[k],tMin[k],tMax[k],val2[k],val1[k]);
20+
return newVal;
21+
}
22+
23+
myKfOldValue = key(myKfNum).value//старое значение маркера
24+
myKfTime = key(myKfNum).time//время кейфрейма
25+
26+
if(time <= myKfTime)//участок до нашего кейфрейма
27+
if(myKfNum == 1)//если это первый кейфрейм
28+
myKfNewValue;//не анимируем анимацию до него (её нет)
29+
else
30+
{
31+
prevKfTime = key(myKfNum - 1).time//время предыдущего маркера
32+
prevKfValue = key(myKfNum - 1).value//значение предыдущего маркера
33+
if(time >= prevKfTime)//если мы в промежутке между нашим и предыдущим кейфреймами
34+
if(value instanceof Array)
35+
value.linear(prevKfValue,myKfOldValue,prevKfValue,myKfNewValue);//МАГИЯ
36+
else
37+
if(prevKfValue < myKfOldValue)
38+
linear(value,prevKfValue,myKfOldValue,prevKfValue,myKfNewValue);//МАГИЯ
39+
else
40+
linear(value,prevKfValue,myKfOldValue,myKfNewValue,prevKfValue);//МАГИЯ
41+
else //если мы до промежутка с измененной анимацией
42+
value;//ниче не делаем
43+
}
44+
else //УЧАСТОК ПОСЛЕ НАШЕГО КЕЙФРЕЙМА
45+
if(myKfNum == numKeys)//если это последний кейфрейм
46+
myKfNewValue;//не анимируем
47+
else
48+
{
49+
nextKfTime = key(myKfNum+1).time;////время следующего маркера
50+
nextKfValue = key(myKfNum+1).value;//значение следующего маркера
51+
if(time<=nextKfTime)
52+
if(value instanceof Array)
53+
value.linear(myKfOldValue,nextKfValue,myKfNewValue,nextKfValue);//МАГИЯ
54+
else
55+
{
56+
if(myKfOldValue < nextKfValue)
57+
linear(value,myKfOldValue,nextKfValue,myKfNewValue,nextKfValue);//МАГИЯ
58+
else
59+
linear(value,myKfOldValue,nextKfValue,nextKfValue,myKfNewValue);//МАГИЯ
60+
}
61+
else value;
62+
}

0 commit comments

Comments
 (0)