我目前正在研究命运之轮,它通过 node.js 和 websockets同步到每个连接的设备。但是我想切断动画的开始,当用户在滚轮已经旋转时加入,所以它只会显示动画的最后几秒而不改变它的缓动。
jquery 动画由一个简单的步骤动画组成,它可以旋转轮子。我已经尝试更改步骤的“fx”对象的参数,如 fx.start 或 fx.pos。而 fx.start 只是动画开始时的变量,例如 180 度,而 fx.pos 只是一种输出参数,用于将某些内容更改为动画中的给定时间,例如文本颜色或其他内容。但是 fx.pos 值不能改变,也不能改变动画当前设置的位置。我创建了一个函数来旋转命运之轮两次,然后它在给定的度数处停止。
我也尝试改变缓动,所以它会是 50% 线性,50% 摆动,但这会让动画看起来很垃圾,因为一开始它以恒定速度旋转,突然它旋转得更快而不是更慢。
function spinRoulette(deg, duration = 10000) {
deg = Math.round(deg);
$("img.roulette").animate(
{ now: '+='+(720+deg-getRotation()) }, {
duration: duration,
...
step: function(now, fx) {
if(now >= 360)
now -= 360;
$(this).css("transform", "rotate("+now+"deg)");
}
});
}
如果持续时间少于 10 秒,动画的开始将被切断。所以,如果服务器在大约 5 秒前转动轮子,我的动画的前 5 秒应该被切断。
慕斯王
相关分类