元素的旋转不顺畅

时间:2015-05-26 09:12:51

标签: javascript css html5 cordova animation

我正在开发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,但是当我们需要让一些元素不断动画时,性能并不是很好。

3 个答案:

答案 0 :(得分:1)

您是否看过另一个问题? CSS3 Spin Animation

是否一样?

答案 1 :(得分:0)

您可以尝试使用针对dom动画优化的其他库。我实际上并没有使用过一个,所以我真的不能说是否有显着的性能提升但仍然看起来很有希望:

我听说过这个好消息:Velocity

答案 2 :(得分:0)

我的建议:使用画布。

但是,要坚持使用现有的代码库:

您可以通过将其置于具有足够空间的边界框中来平滑事物,因此在旋转时不必重新计算整个页面(页面长度/宽度在旋转时不会改变)。使用画布和webgl可以使事情变得更加顺畅。

此外,对于任何繁重的刻度延伸处理(计算应该去的地方,旅行路径等等),请使用您将对象发布到的网络工作者(不要以json args发布。使用单个参数postMessage作为对象传递)。这样,渲染线程就不必等待计算继续旋转,并且可以在完成后推送路径与元素一起移动。

另外,保存对对象的引用。不要重复使用document.getElementById。使用document.getElementById一次并保留引用并传递它。