バニラでピンチインアウトの記述に挑戦中です。
touchMoveの中にif文で1本指か2本指かを分岐させ、2本指だったら座標を取ってくるというような記述をしています。全文はとても長いので割愛します。
変数のboth2pointsはtouchStart時の2本の指の間隔を数値化したもので、今後の比較材料となります。
javascript
1}else{ 2 console.log("初期の指の間隔は" + both2points); 3 // タッチの指の数を検出し色々やる 4 function timer1(){ 5 console.log(e.touches.length,1); 6 for(let i=0; i < e.touches.length; i++){ 7 console.log(e.touches[i].pageX + " " + i + "本目の指の座標"); 8 } 9 if(e.touches.length == 0){ 10 clearInterval(intervalId); 11 } 12 } 13 const intervalId = setInterval(timer1,2000); 14 } 15 };
canvas内で行うものですが、move中にすべての描画を行うと負荷がかかりすぎると判断し、〇秒おきに座標を取ってきて比較材料との寸法比を出して描画しようとしています。上記ではテストのため2000ミリ秒。
非常に基本的なことかもしれませんがclearIntervalが利きません。思惑としては「現在のタッチ数が0であればタイマーを解除としたいのですが判定してくれないようです。こういった場合どのように止めればよいのでしょうか。
一度セットタイマーをグローバル関数としてtouchEndで止めようともしましたがうまくいかずに頓挫しました。
よろしくお願いします。
あなたの回答
tips
プレビュー