Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/403.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 元素的旋转不平滑_Javascript_Css_Html_Cordova_Animation - Fatal编程技术网

Javascript 元素的旋转不平滑

Javascript 元素的旋转不平滑,javascript,css,html,cordova,animation,Javascript,Css,Html,Cordova,Animation,我正在开发一个HTML5游戏,它是关于不断旋转一个div元素并向其中添加元素 我注意到旋转并不像它应该的那样平滑和规则,有时可以注意到一些小的跳跃 我使用了一个带有旋转变换的setInterval来创建效果,但是效果很差,而且不稳定。然后,我修改了代码,使用requestAnimationFrame,它运行得更好,但仍然不够完美,并限制了速度控制 我还使用此CSS代码将动画处理传递到GPU: transform: translate3d(0, 0, 0); backface-visibility

我正在开发一个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看起来很简单,一次动画也不错,但是当我们需要不断地为某些元素设置动画时,性能就不是很好了

您可以尝试使用为dom动画优化的其他库。我还没有实际使用过一个,所以我不能说是否有显著的性能提升,但它们听起来还是很有希望的:


我听说过关于这个的好消息:

我的建议:使用画布

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

您可以将它放在一个有足够空间的边界框中,这样它就不必在旋转时重新计算整个页面(页面长度/宽度在旋转时不会改变),从而使事情变得平滑。不过,使用画布和webgl会使事情变得更加平滑

此外,对于任何繁重的标记扩展处理(计算事物应该去哪里、旅行路径等),请使用将对象发布到的webworker(不要作为json参数发布。使用postMessage的单个参数作为对象传递)。这样,渲染线程就不必等待计算来保持旋转,只需在完成后推动路径与元素一起移动即可


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

您有没有看一下这另一个问题?


这是一样的吗?

您是否在浏览器中进行过分析,以查明代码中的实际性能瓶颈?Gracias Raúl!这是不一样的,但我可以适应我的程序。现在它运行平稳,我甚至可以控制我想要使用的速度。