2016-08-09 58 views
-1

私はキャンバスを持っている角度アプリを使用しており、そのキャンバスに長方形を描くことができます。なぜ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(typo)があったため、最初の行をtouchmoveに変更しましたが、それでもtouchmoveを起動しません。 また、何かを描こうとすると、私はIgnored attempt to cancel a touchstart event with cancelable=false, for example because scrolling is in progress and cannot be interrupted.という警告を受け取ります。これは非角形のアプリケーション(非常にシンプルなキャンバスのやりとり)で同じことを試したので、実際には奇妙で、私はそのエラーを取得しませんでした。それはスクロールから私をブロックし、代わりにキャンバス上のものを描いた。

答えて

0

あなたはこのラインでリスナーを追加するときに、あなたのコードを確認した場合:あなたはtouchmove(e)として、あなたの関数を宣言しているコードで以下の機能self.touchMove(e)を呼び出して、よりいる

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

、ここにありますタッチイベントを処理するのに役立つ素晴らしい図書館 Hammerjs

+0

私はそれを両方の場所でtouchmoveに変更しましたが、まだ発射していません。私は 'self.canvas.addEventListener( 'touchmove'、(e)=> {console.log(" hi "); self.touchMove(e);});と'を入れても、hiは表示されません。 – welc0meToTheMachine

+0

@ welc0meToTheMachineどのようにコードをテストしていますか? –

+0

どういう意味ですか?私は、マウスのやりとりを通してすでに持っているイベントをエミュレートしようとしています。機能がコンソールログとデバッガのステートメントで実行されているかどうかをテストしています。そして、私はdevのツールを使用して、アプリを試して、タブレット/モバイル(2つの画面のアイコン)に表示を変更すると、 – welc0meToTheMachine

関連する問題