2016-08-09 3 views
-1

Я использую угловое приложение, где пользователь имеет холст, и может рисовать прямоугольники на этом холсте.Почему touchmove не работает на html-холсте?

Мое касание и касание стреляют, но touchmove нет. Я не уверен, что я не понимаю, как работает touchmove. Я предполагал, что это будет эквивалентно mousemove.

self.canvas.addEventListener('touchmove', (e) => { self.touchMove(e); }); 
    self.canvas.addEventListener('touchstart', (e) => { self.touchStart(e); }); // touch down event 
    self.canvas.addEventListener('touchend', (e) => { self.touchEnd(e); }); // 



    touchStart(e) { 
    e.preventDefault(); 
    const self = this; 
    const activeTag = self.TagService.activeTags[0]; 
    this.canvasState.doTouchStart(e, activeTag, (shape) => { 
     self.selection = shape; 
    }); 
    } 


    touchEnd(e) { 
    const self = this; 
    // console.log(this);//is the controller 
    const activeTag = self.TagService.activeTags[0]; 
    self.canvasState.doTouchEnd(e, activeTag, function doTouchUp(shape) { 
     self.selection = shape; 
     self.addShape(shape); 
     // console.log(self.shapes); 
    }); 
    } 

    touchmove(e) { 
    e.preventDefault(); 
    console.log("HERE HERE HERE"); 
    const self = this; 
    const activeTag = self.TagService.activeTags[0]; 
    this.canvasState.doTouchMove(e, activeTag, (shape) => { 
     let len = self.shapes.length; 
     self.addShape(shape); 
     let len2 = self.shapes.length; 
     if (len2 - len === 1) { 
     self.draw(); 
     self.shapes.splice(-1, 1); 
     } 
    }); 
    } 

Прикосновение и прикосновение к работе, но прикосновение к движению никогда не срабатывает. Я никогда не могу получить консольный вывод.

Редактировать: я изменил первую строчку, чтобы быть touchmove, так как там была сенсорная кнопка и touchmove (опечатка), но это все еще не срабатывает при касании. Кроме того, я получаю предупреждение Ignored attempt to cancel a touchstart event with cancelable=false, for example because scrolling is in progress and cannot be interrupted., когда пытаюсь что-то нарисовать. Это действительно странно, потому что я пробовал одно и то же в негласном приложении (очень простые взаимодействия с холстом), и я не получил эту ошибку. Он заблокировал меня от прокрутки и вместо этого нарисовал материал на холсте.

ответ

0

Если просмотреть код, при добавлении слушателя в этой строке:

self.canvas.addEventListener('touchmove', (e) => { self.touchMove(e); }); 

вы вызываете функцию self.touchMove(e) и более ниже в коде вы объявляя вашу функцию как touchmove(e), Вот отличная библиотека, которая помогает вам справляться с событиями касания. Hammerjs

+0

Да, я изменил его, чтобы он касался друг друга в обоих местах, но он все еще не стреляет. Я даже поставил 'self.canvas.addEventListener ('touchmove', (e) => {console.log (" hi "); self.touchMove (e);});' И привет не распечатывается. – welc0meToTheMachine

+0

@ welc0meToTheMachine Как вы тестируете свой код? –

+0

Что это значит? Я просто пытаюсь подражать событиям, которые у меня уже есть при взаимодействии с мышью, и проверять, выполняются ли функции через консольный журнал и инструкции отладчика. И я пытаюсь использовать приложение с помощью инструментов dev, а также изменение отображения на планшет/мобильный (значок двух экранов) – welc0meToTheMachine

Смежные вопросы