用弹性里面一段改了个用在时间重映射的东西,再滑块ctrl里面k帧就是时间从0开始
ctrl=effect("ctrl")(1);
//获取滑块控制,代号ctrl;
T=0;
//先设默认值为0,防止出错;
if (ctrl.numKeys >= 1){
//如果ctrl里面的关键帧数量大于等于1;
n =ctrl.nearestKey(time).index;
//n等于现在时间最近的关键帧的序号(就是第几个的意思)
if((time<ctrl.key(1).time)){
//如果时间少于第一个帧的时间;
T=0;
//归零;
}else{
//否者;
if (ctrl.key(n).time > time){
//如果获取序号的帧的时间点大于现在的时间;
n--;
//n减少1,把序号变成现在时间之前的最近的帧的序号;
};
T=(time-ctrl.key(n).time)*2;
//时间等于现在的时间,剪去现在时间前面的最近的关键帧的时间,(喜欢加快就乘以多少,喜欢偏慢就加减多少)
}
}else{T=0;}
//ctrl里面没关键帧的话,归零;
2017年3月26日更:
try{
/*ctrl=effect("timeCtrl")(1);*/
ctrl=timeRemap;
k=2;
T=0;
if (ctrl.numKeys >= 1){
n =ctrl.nearestKey(time).index;
if((time<ctrl.key(1).time)){
T=0;
}else{
if (ctrl.key(n).time > time){
n--;
};
T=(time-ctrl.key(n).time)*k;
}
}else{value;}
}catch(err){value;}
----------------------------------------------------------------------------------
持续一段时间的marker
var ctrl,T,k,dura;ctrl=thisLayer.marker;T=0;k=effect("k")(1);dura=effect("MGdura")(1);if(ctrl.numKeys>=1){var n=ctrl.nearestKey(time).index;if((time<ctrl.key(1).time)){T=0}else{if(ctrl.key(n).time>time){n--}}var start=ctrl.key(n).time;var mid=ctrl.key(n).time+ctrl.key(n).duration/2;var end=ctrl.key(n).time+ctrl.key(n).duration;var keyDura=ctrl.key(n).duration;if(time>start&&time<end){if(keyDura<dura/k*2){var cT=Math.abs(time-mid);T=linear(cT,0,keyDura/2,dura,0)}else{var cT=Math.abs((end-time)-(time-start));T=linear(cT,keyDura-dura/k,keyDura,dura,0)}}else{T=0}}else{T=0}T;
上面这段用滑块T装着,另外建两个滑块,一个k,一个MGdura,分别是速度倍数以及动画长度;
然后在有关键帧的属性上加上表达式valueAtTime(T); 这里的T用小蚊香拉到上面的滑块T就可以了;
时间点上的marker
var ctrl=thisLayer.marker;var T=0;var k=effect("k")(1);if(ctrl.numKeys>=1){n=ctrl.nearestKey(time).index;if((time<ctrl.key(1).time)){T=0}else{if(ctrl.key(n).time>time){n--}T=(time-ctrl.key(n).time)*k}}else{T=0}T;
跟上面一样,但是不需要MGdura,这个是k帧归零的;
---------------------------------------------------
相似的还有利用图层标记文本换行,但是感觉直接想办法用lrc比较方便
str=value;enter=String.fromCharCode(13);strG=str.split(enter);var ctrl;ctrl=thisLayer.marker;if(ctrl.numKeys>=1){var n=ctrl.nearestKey(time).index;if((time<ctrl.key(1).time)){N=0}else{if(ctrl.key(n).time>time){n--}}var start=ctrl.key(n).time;var end=ctrl.key(n).time+ctrl.key(n).duration;var keyDura=ctrl.key(n).duration;if(time>start&&time<end){N=n}else{N=0}}else{N=0}if(N>0){result=strG[N-1]}else{result=""};
这段直接扔文本层源文本就可以,然后打图层标记,一段时间的图层标记
© leizingjiu | Powered by LOFTER