Не работает swipe
Пытаюсь реализовать мобильное управление и добавил swipe жесты вверх и вниз (button3 и button4) и по какой-то причине они не работают. Подскажите, в чём проблема?
var button1 = false, //влево button2 = false, // вправо button3 = false, //прыжок button4 = false; //подкат var touchstartX = 0; var touchstartY = 0; var touchendX = 0; var touchendY = 0; var el = document.getElementsByTagName('body')[0]; el.addEventListener("touchstart", handler, false); el.addEventListener("touchend", handleEnd, false); el.addEventListener("touchmove", handler, false); function handler(e) { touchstartX = e.pageX; touchstartY = e.pageY; button2 = !(button1 = (window.innerWidth / 2) < e.changedTouches[0].pageX); }; function handleEnd(e) { // touchendX = e.screenX; touchendY = e.pageY; var touches = e.changedTouches; if (window.innerWidth / 2 < touches[0].pageX) { button1 = false; button2 = false; } if (window.innerWidth / 2 > touches[0].pageX) { button2 = false; button1 = false; } //swipe Up if (touchendY < touchstartY) { button3 = true; } //swipe Down if (touchendY > touchstartY) { button4 = true; } }; |
реализовал
var button1 = false,//влево button2 = false,//вправо button3 = false,//прыжок button4 = false;//скольжение var el = document.getElementsByTagName('body')[0], swipedir, startY, distY; el.addEventListener('touchstart', function(e){ button2 = !(button1 = (window.innerWidth / 2) < e.changedTouches[0].pageX); swipedir = 'none' distY = 0 startY = e.changedTouches[0].pageY }, false) el.addEventListener('touchmove', function(e){ button2 = !(button1 = (window.innerWidth / 2) < e.changedTouches[0].pageX); }, false) el.addEventListener('touchend', function(e){ var touchobj = e.changedTouches[0]; if (window.innerWidth / 2 < e.changedTouches[0].pageX) { button1 = false; button2 = false; } if (window.innerWidth / 2 > e.changedTouches[0].pageX) { button2 = false; button1 = false; } distY = e.changedTouches[0].pageY - startY; if(distY < 0 && distY <= 40){ button3=true; setTimeout(function(){ button3 = false; }, 300) }; if(distY > 0 && distY >= 30){ if(game.cat.slidingTimer == true){ button4=true; setTimeout(function(){ button4 = false; }, 10) } } }, false) |
Часовой пояс GMT +3, время: 00:25. |