我已经使用 WAAPI 创建了一个图像滑块,用于(一种)在游戏中唱歌。滑块与歌曲链接,因此动画时机非常重要。使用 WAAPI 关键帧(与 CSS 关键帧非常相似),时间偏移量为 0-1,因此在下面的代码笔中动态创建关键帧所需的计算。滑块应连续循环每张下一张幻灯片,包括从最后一张幻灯片再次滑到第一张幻灯片。问题是动画不能从slide5无缝地继续到slide0。
这是我动态设置关键帧的方法:
var keyframes = []
var pause = 0.18
var anim = 0.02
var slideHeight = 150
var translateBy = 0
var a = {transform: 'translateY(0)'} //set initial keyframe before loop
keyframes.push(a)
var offsetPercent = 0 //offset var to increment by anim & pause vars.
for(let i=0; i<songVars.fileLength; i++) {
var b = {
offset: offsetPercent+= anim,
transform: 'translateY('+ translateBy +'px)'
}
var c = {
offset: offsetPercent+= pause,
transform: 'translateY('+ translateBy +'px)'
}
keyframes.push(b, c)
translateBy-= slideHeight;
}
var d = {transform: 'translateY('+ translateBy +'px)'};
keyframes.push(d)
此代码笔显示图像滑块不会从最后一张图像无缝循环回第一张图像。那是因为我找不到使用 WAAPI 关键帧实现连续、无缝循环的方法。由于 CSS 设置为 ,第一张幻灯片 (slide0) 最初是看不见的top: 100%; transform: translateY(-100%);
。我这样做是因为幻灯片应该从容器 div 的底部向上滑动开始。
我最初的幻灯片从位置 0 开始,所以 slide0 确实从底部开始,但它不适用于计时并且时间用完,并且第一张幻灯片也需要很长时间才能到位:https:/ /codepen.io/nancy-collins/pen/bGVKBQq
我还尝试了从位置-300px 开始的幻灯片,因此 slide0 在视图中并且不会从底部向上滑动,但是当它到达 slide5 时它会跳转到 slide0,如下所示:https ://codepen.io/nancy-collins/笔/vYNrvaa
我知道滑块是这里的常见讨论,但 WAAPI 没有。这是一个非常新的 API,但肯定能够实现循环滑块。谢谢。