处理触发动画的事件-当数百个嵌套元素时,画布/父级div-来自地图的提示

时间:2019-01-28 09:49:41

标签: google-maps events svg hammer.js

寻找用于处理复杂渲染布局的手势的先进技术,这可以帮助我更好地处理性能-特别是在手机上。

我正在运行一个具有两个版本的网站,一个版本在webgl中,另一个版本使用SVG。

它们表示连接的图,并且在台式机上运行良好,但是却在移动设备性能方面挣扎(也很大程度上取决于手机)。

我查看了笔记本电脑的Web控制台的性能,其中一种改进方法可能是处理更好的事件。

到目前为止,我处理这样的事件: 为每个元素注册事件(它们可以是数百个),并且在这种情况下,我尝试通过查看类似条件来最小化Animation frame的渲染更新;对于webgl,我还实施了剔除,删除了屏幕上不存在的元素(这很有帮助)。

这是SVG网站的伪代码:

Hammer(element).on('touchStart', function(event){

      if (window.scheduledAnimationFrame) return; 

      window.scheduledAnimationFrame = true; 
      if ( condition is satisfied ) {

        requestAnimationFrame( renderingUpdateFunction ); 

      function renderingUpdateFunction() {

          // do smtg

          window.scheduledAnimationFrame = false;

      }

    }

...  },否)

优点是我可以保持代码整洁,并为所有元素重复注册。缺点是,也许有数百个元素,加上父级手机中涉及的其他手势(例如缩放)很费劲-我发现很难准确地调试出可能的罪魁祸首,因为我发现台式机和笔记本电脑的速度差别很大。提示性能层还不错。

您能否详细说明使用替代方法的利弊? 我认为,只听父级(即父级div和画布),检查鼠标/手指触摸的坐标,并尝试确定哪些元素可能对应于那些坐标(认为两个元素可能接近或部分重叠)? / p>

作为比较,Maps(google,bing,openstreet ...)应用程序如何处理事件:在地图上存在的每个地标上还是在画布上?

我认为他们为工程问题提供了一些见解,以解决具有许多交互点的对象的性能。

0 个答案:

没有答案