我正在开发HTML5游戏,它是关于不断旋转div元素并为其添加元素。
我注意到旋转不像应该的那样平滑和规则,有时可以注意到很少的跳跃。
我正在使用带旋转变换的setInterval来创建效果,但它真的很糟糕且不稳定。然后我更改了代码以使用requestAnimationFrame,它变得更好但仍然不完美,并且限制了速度控制。
我也在使用这个CSS代码将动画处理传递给GPU:
transform: translate3d(0, 0, 0);
backface-visibility: hidden;
perspective: 1000;
-webkit-transform: translate3d(0, 0, 0);
-webkit-backface-visibility: hidden;
-webkit-perspective: 1000;
有人知道我还能做些什么来改进动画吗?看起来很简单,有一次动画可以用cordova,但是当我们需要让一些元素不断动画时,性能并不是很好。
答案 0 :(得分:1)
您是否看过另一个问题? CSS3 Spin Animation
是否一样?
答案 1 :(得分:0)
您可以尝试使用针对dom动画优化的其他库。我实际上并没有使用过一个,所以我真的不能说是否有显着的性能提升但仍然看起来很有希望:
我听说过这个好消息:Velocity
答案 2 :(得分:0)
我的建议:使用画布。
但是,要坚持使用现有的代码库:
您可以通过将其置于具有足够空间的边界框中来平滑事物,因此在旋转时不必重新计算整个页面(页面长度/宽度在旋转时不会改变)。使用画布和webgl可以使事情变得更加顺畅。
此外,对于任何繁重的刻度延伸处理(计算应该去的地方,旅行路径等等),请使用您将对象发布到的网络工作者(不要以json args发布。使用单个参数postMessage作为对象传递)。这样,渲染线程就不必等待计算继续旋转,并且可以在完成后推送路径与元素一起移动。
另外,保存对对象的引用。不要重复使用document.getElementById。使用document.getElementById一次并保留引用并传递它。