NISHIO Hirokazu[Translate]
二本指ジェスチャ時に一本指での描画が同時に発生する問題
old title: マウスでの描画が同時に発生するので変な線ができる問題

解決
touchstartのハンドラでpreventDefaultしてもPaper.jsのToolの側のonMouseDownが呼ばれる
これがなぜかというとPaper.jsがそもそもtouch可能なデバイスについてはtouchStartを掴んでmouseDownに中継しているからだ: src
というわけで直すべきなのはToolに描画のために僕が渡したハンドラの側
onMouseDownでパスオブジェクトを作成していたが、それを遅延させる
onMouseDragで生のイベントオブジェクトを確認
それがtouchmoveでtouches.length > 1なら何もせずにreturnする
→直った!

---
マルチタッチの開始時にpreventDefaultしてるのにマウスイベントが発生しているのはなぜだ
そうか、タップのハンドラはwindowに付けたから、デフォルトではキャンバスについてる方が先に呼ばれるわけか。
キャプチャしてstopPropagationするのが正しいのかな

stopPropagationしても振る舞いは変わらず
useCaptureをつけると予想に反してドローだけ発生して2本指ジェスチャが動かなくなる


"Engineer's way of creating knowledge" the English version of my book is now available on [Engineer's way of creating knowledge]

(C)NISHIO Hirokazu / Converted from [Scrapbox] at [Edit]