Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 28.01.2019, 07:07
Кандидат Javascript-наук
Отправить личное сообщение для Retro_1477 Посмотреть профиль Найти все сообщения от Retro_1477
 
Регистрация: 14.04.2018
Сообщений: 113

Не работает 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;
  }
};
Ответить с цитированием
  #2 (permalink)  
Старый 28.01.2019, 18:59
Кандидат Javascript-наук
Отправить личное сообщение для Retro_1477 Посмотреть профиль Найти все сообщения от Retro_1477
 
Регистрация: 14.04.2018
Сообщений: 113

реализовал
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)
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
JS: работает на сервере, не работает из папки -majestic- Общие вопросы Javascript 2 02.08.2012 14:41
Не работает push! Динамическая вставка TSEH25 ExtJS 5 03.07.2012 13:00
jQyery функция странно работает! Midel Общие вопросы Javascript 4 08.04.2012 13:40
помогите найти ошибку (работает в IE но не работает в Firefox) Len4ik Javascript под браузер 2 11.05.2010 15:41
Safari + ajax некорректно работает, а в других работает demi AJAX и COMET 35 15.07.2009 14:11