我第一次在这里提问,这个网站非常有帮助,我只是找不到我的问题的答案。
请耐心等待,在提出我的问题之前我会充分解释自己:)
我正在开发一个在桌面上运行的 html5 游戏,并在移动设备上作为应用程序运行。
在游戏的一部分中,我有一个 1500 x 1200 的画布,它被渲染一次,它被放置在 DOM 中的某个位置,在一个较小的 div 内,它允许在该 div 内滚动画布。
这在桌面和 iOS 移动设备上运行得非常好。但它在 Android 上运行得不是很好。性能不佳是指触摸需要一两秒钟才能注册,然后当手指移动以滚动画布时,画布会滞后。
我做了很多研究和大量测试:
-我可以通过暂时关闭easeljs和相关脚本来提高性能,但应用程序的其余部分需要这个。- 通过删除 $(document) 和其他元素的绑定获得了进一步的性能。但是,Android 的性能仍然无法与 iOS 和 Desktop 相媲美。
最终,当 canvas 元素被 .removed() 并附加到 html 'body' 时,我获得了接近桌面的性能。为什么是这样?我显然不能在游戏中使用这种方式,但我需要以某种方式重新创造这种性能提升。
这是更令人困惑的事情。再次将相同的 Canvas 元素删除并附加到它在 DOM 中的位置,现在在性能方面仍然要好得多。它现在滚动更流畅,触摸输入延迟更少。有人可以给出提示或解释为什么会这样吗?
这种行为的可能原因是什么?
//编辑: 关于我的问题的更多解释。滚动元素时,Android 上有哪些主要的性能影响?触摸触发的事件太多?DOM 中的元素太深?DOM 中的 CSS 太多?EaselJS 玩不好?
谢谢