2016-02-12 140 views
0

我在Android的meteor/cordova应用程序中创建了一个非常标准的移动slideOut菜单。我安装了crosswalk package,并且在用户界面性能方面看到了惊人的提升,除了我用于菜单和其他滑动面板的touchmove事件。下面是触摸事件的代码。Android上的crossWalk cordova touchmove性能问题

/* Touch Events - Nav */ 
var el = document.getElementById('appnavigation'); 
var touchPos; 
var start = function(event) { 
    var touch = event.touches[0] || 
       event.changedTouches[0]; 

    touchPos = touch.clientX; 
    el.style.transition = 'transform 0.08s'; 
}; 
var end = function(event) { 
    var touch = event.touches[0] || 
       event.changedTouches[0]; 
    var pos = el.getBoundingClientRect().left; 

    if (Math.abs(pos) > 160) { 
    App.Util.toggleVisible('nav'); 
    } 

    el.style.transition = ''; 
    el.style.transform = ''; 
}; 
var move = function(event) { 
    var touch = event.touches[0] || 
       event.changedTouches[0]; 
    var x = Math.abs(touch.clientX - touchPos); 

    if (touch.clientX > 0 && x > 0) { 
    el.style.transform = 'translate3d(-' + x + 'px, 0, 0)'; 
    } 
}; 

// attach event listeners 
el.addEventListener('touchstart', start, false); 
el.addEventListener('touchend', end, false); 
el.addEventListener('touchcancel', end, false); 
el.addEventListener('touchmove', move, false); 

这个工程,但变得零星laggy,任何帮助将是伟大的。

回答

1

好吧,被我自己的黑客殴打。当我最初做这件事的时候,我使用jQuery,并且为了平滑事情需要非常快速的转换。当移动到人行横道时,虽然这实际上使移动变得糟糕而迟缓,因此解决方案在touchstart处理程序中设置为无。

就是这样。