Wydajność wymaga minimalnej kod
wtyczek i bibliotek muszą być pisane być tak elastyczne i ogólnie jak to możliwe, aby rozwiązać wiele problemów związanych. Oznacza to, że zawsze będą bardziej masywne niż potrzebujesz, wpływając na wydajność. Oznacza to również, że nigdy nie będziesz musiał utrzymywać tego kodu. To jest kompromis.
Jeśli wydajność jest Twoim celem, zbuduj ją samodzielnie.
Ponieważ WSZYSTKIE, czego potrzebujesz, to wykrywanie rozwijania, zbuduj prosty czujnik przesunięcia. Oczywiście, musisz dostosować to do swoich potrzeb, a także właściwości zdarzeń, wyzwalaczy zdarzeń systemu operacyjnego i przeglądarki, na które kierujesz.
Uproszczone z moim starym js-minimal-swipe-detect
var pStart = {x: 0, y:0};
var pStop = {x:0, y:0};
function swipeStart(e) {
if (typeof e['targetTouches'] !== "undefined"){
var touch = e.targetTouches[0];
pStart.x = touch.screenX;
pStart.y = touch.screenY;
} else {
pStart.x = e.screenX;
pStart.y = e.screenY;
}
}
function swipeEnd(e){
if (typeof e['changedTouches'] !== "undefined"){
var touch = e.changedTouches[0];
pStop.x = touch.screenX;
pStop.y = touch.screenY;
} else {
pStop.x = e.screenX;
pStop.y = e.screenY;
}
swipeCheck();
}
function swipeCheck(){
var changeY = pStart.y - pStop.y;
var changeX = pStart.x - pStop.x;
if (isPullDown(changeY, changeX)) {
alert('Swipe Down!');
}
}
function isPullDown(dY, dX) {
// methods of checking slope, length, direction of line created by swipe action
return dY < 0 && (
(Math.abs(dX) <= 100 && Math.abs(dY) >= 300)
|| (Math.abs(dX)/Math.abs(dY) <= 0.3 && dY >= 60)
);
}
document.addEventListener('touchstart', function(e){ swipeStart(e); }, false);
document.addEventListener('touchend', function(e){ swipeEnd(e); }, false);
'nie są uruchomione fast' w jakim sensie? nie ciągnąć wystarczająco często? przeciąganie trwa zbyt długo? jeśli to drugie, istnieje szansa, że sprzęt to problem. –
Szarpie zawsze trochę. Nie w 100% rodzime uczucie. – Peter
Jeśli chcesz, aby nie dostać się do większego kodu, możesz zaimplementować listę gestów przeciągnięcia – GeekWithGlasses