loopOut(type = "cycle", numKeyframes = 0)
后面的數值0用來控制從第幾幀開始循環
將關鍵幀動畫重復進行的循環效果 將關鍵幀動畫重復進行的循環效果 比如你有關鍵幀1、2、3,這種循環模式就是1、2、3、1、2、3、1、2、3.....一直循環下去 |
||
loopOut(type = "cycle", numKeyframes = 0)
后面的數值0用來控制從第幾幀開始循環
像乒乓球一樣來回往復循環 同樣,如果你有關鍵幀1、2、3,那么這種循環模式就是按1、2、3、3、2、1、1、2、3.....這種規律循環下去
|
||
loopOut(type="continue")
沿着最后一幀的方向和運動速度繼續運動下去 這種模式相比前兩種用的較少,可以便於制作動畫持續緩慢運動的效果,避免動畫靜止, 也可以制作一些數字持續增長等效果 |
||
cycle=360;
循環旋轉表達式 第一行 360 代表循環周期 第二行1 代表轉速 值越大,轉的越快。 |
||
amp = .1; //振幅 freq = 2.0; //頻率 decay = 2.0; //阻力 n = 0; if (numKeys > 0){ n = nearestKey(time).index; if (key(n).time > time){n--;} } if (n == 0){ t = 0;} else{t = time - key(n).time;} if (n > 0){ v = velocityAtTime(key(n).time - thisComp.frameDuration/10); value + v*amp*Math.sin(freq*t*2*Math.PI)/Math.exp(decay*t); } else{value} 彈性表達式 這個表達式看起來很復雜,但是沒關系,咱們只要會復制粘貼就好。 其中有三個關鍵的數值用來控制彈性的效果,需要根據自己需要的效果來調整。 amp,即振幅,用來控制彈性的幅度大小。 freq,頻率,用來控制彈性抖動的快慢。 decay,阻力,也叫衰減、阻尼等,這個值越大,則彈性效果能夠越快停下來。
|
||
e =0.7;//彈力 g =1000;//重力 nMax = 9;//最大彈跳次數 n = 0; if (numKeys > 0){ n = nearestKey(time).index; if (key(n).time > time) n--; } if (n > 0){ t = time - key(n).time; v = -velocityAtTime(key(n).time - .001)*e; vl = length(v); if (value instanceof Array){ vu = (vl > 0) ? normalize(v) : [0,0,0]; }else{ vu = (v < 0) ? -1 : 1; } tCur = 0; segDur = 2*vl/g; tNext = segDur; nb = 1; // number of bounces while (tNext < t && nb <= nMax){ vl *= e; segDur *= e; tCur = tNext; tNext += segDur; nb++ } if(nb <= nMax){ delta = t - tCur; value + vu*delta*(vl - g*delta/2); }else{ value } }else value 彈簧(回彈)表達式 同樣,這兒有三個關鍵數值用來控制彈性的效果, 彈力,這個值越高,則跳起的越高 重力,這個值越大,則彈的越快,同時停止的也越快 最大彈跳次數,字面意思,用來控制彈跳的次數,值越大,效果越細膩 這里的彈力和重力都是物理名詞,這個效果也是模擬真實物理現象的,所以需要結合下物理知識來理解。 |
||
freq = 3; amp = 100; loopTime =3; t = time % loopTime; wiggle1 = wiggle(freq, amp, 1, 0.5, t); wiggle2 = wiggle(freq, amp, 1, 0.5, t - loopTime); linear(t, 0, loopTime, wiggle1, wiggle2)
隨機循環 讓隨機抖動的效果能夠形成循環
第一行 頻率
第二行 幅度
第三行 循環時間,單位為秒 |