bro问我怎么做歌词滚动视频
// 为位置属性创建的表达式,实现标记点触发的累积y轴动画
// 需要在效果面板中添加两个滑块控件:"移动距离"和"移动时间"
// 获取滑块控件的值
moveDistance = effect("移动距离")("滑块"); // 每次移动的距离
moveTime = effect("移动时间")("滑块"); // 每次移动的持续时间
// 初始化变量
pos = value;
currentTime = time;
totalOffset = 0; // 累积的总偏移量
markers = thisLayer.marker;
// 计算所有已完成的标记点总数
completedMarkers = 0;
if (markers.numKeys > 0) {
for (i = 1; i <= markers.numKeys; i++) {
if (markers.key(i).time + moveTime <= currentTime) {
completedMarkers++;
}
}
}
// 计算当前正在进行的动画(如果有)
currentAnimationProgress = 0;
if (markers.numKeys > completedMarkers) {
currentMarkerIndex = completedMarkers + 1;
currentMarkerTime = markers.key(currentMarkerIndex).time;
if (currentTime > currentMarkerTime) {
timeIntoAnimation = currentTime - currentMarkerTime;
if (timeIntoAnimation < moveTime) {
// 使用easeOut实现先快后慢的效果
currentAnimationProgress = easeOut(timeIntoAnimation, 0, moveTime, 0, moveDistance);
} else {
currentAnimationProgress = moveDistance;
}
}
}
// 计算总偏移量
totalOffset = completedMarkers * moveDistance + currentAnimationProgress;
// 应用到Y轴(对于3D图层,Y轴是索引1)
pos[1] -= totalOffset;
pos; // 返回最终位置
立即观看