编辑:这个问题与同步无关。
我有一个轮盘式的轮子,我计划与Node.js一起使用,并计算速度和时间,以便每个人都可以通过使用CSS动画获得相同的结果。
问题在于我不希望某些人通过覆盖动画来了解其他人的结果 - 即使它没有带走任何我希望每个人同时看到结果(类似于setInterval会显示不同的结果)结果在不同的机器上,甚至是具有相同输入的同一台机器上)
//jQuery
function spin() {
spinning = true; //currently using clicks to trigger
var r = Random(720000,1080000)/1000; //final angle to 3dp[![enter image description here][1]][1] (spins between 2 and 3 revolutions) - not going to just use a simple random number generator btw if you were getting worried.
var t = (r*8)/360; //8s per revolution
$(".wheel").css("transition", "transform " + t + "s cubic-bezier(0.05, 0.34, 0.05, 0.95)").css("transform", "rotate(" + (r+a) + "deg)");
a = (r+a)%360; //a is the current position
setTimeout(correct, t*1000 + 250); //Set position to between 0 and 360
}
function correct() {
spinning = false;
$(".wheel").css("transition", "transform 0s cubic-bezier(0.05, 0.34, 0.05, 0.95)").css("transform", "rotate(" + a + "deg)");
}
我能够说出结果中有多少x个插槽,但它不是很正确。
•我想知道旋转时哪个插槽位于箭头下方,因此箭头可以改变颜色以清楚地显示结果(如果箭头位于插槽之间的凹槽上方):
•理想情况下,我希望阻止人们立即看到结果,而不必像其他人一样等待,我会很好地使用JS中的最终结果变量 - 只是没有公开的1行CSS来克服它。
我不确定如何在JavaScript中进行此转换,我传递结果然后执行动画,同时在更改加速和减速时跟踪旋转,并知道箭头在旋转时指向的是什么。
或者我应该只是在服务器上模拟并输出角度,即使这样太多了......?
angle=(-((time*(sqrt(finalAngle)/finalTime))-sqrt(finalAngle))^2)+finalAngle
然后我将使用时间戳来计算轮子的角度,它允许我想要的缓和,我想要的同步速度,知道结果将是什么的轻微困难(尽可能多的客户端可以做)并且不需要持续广播使用带宽。