前提・実現したいこと
下記の問題を解決するために、一度視線移動を検知したら少しの間他の視線移動の検知を無視する時間を作りたいと考えています。
発生している問題・エラーメッセージ
視線移動(右)を検知した時にマウスカーソルが右に動き続けるのですが、その後視線を正面に戻した際にその視線移動も検知されてしまい、マウスカーソルが左の方に移動し始めてしまうという問題が発生しました。
該当のソースコード
全文だと長くなってしまうので左右の視線移動を検知した際のコードだけ記載させていただきます。
JavaScript
1//リアルタイムモードを処理する部分 2const realtimeModeCB_dev1 = data => { 3 4 var mouse = robot.getMousePos(); 5 let left = false; 6 let right = false; 7 let cm = 2; 8 let date_now = Date.now(); 9 10 var cmr = function() { 11 robot.moveMouse(mouse.x += cm, mouse.y); 12 migi = setTimeout(cmr, 250); 13 }; 14 15 var cml = function() { 16 robot.moveMouse(mouse.x -= cm, mouse.y); 17 hida = setTimeout(cml, 250); 18 }; 19 20 if (data.eyeMoveRight > 1) { 21 right = true; 22 console.log("Right"); 23 } 24 25 if (data.eyeMoveLeft > 1) { 26 left = true; 27 console.log("left"); 28 } 29 30 var jr = setTimeout(function() { 31 if (right == true) { 32 cmr(); 33 } 34 }, 1000); 35 36 var jl = setTimeout(function() { 37 if (left == true) { 38 cml(); 39 } 40 }, 1000); 41 42 if (data.blinkStrength > 40) { 43 // 瞬きを検知 44 right = false; 45 left = false; 46 if (migi != null) { 47 // 瞬きを検知、かつタイマーセット済みであればキャンセル 48 clearTimeout(migi); 49 migi = null; 50 } 51 if (hida != null) { 52 // 瞬きを検知、かつタイマーセット済みであればキャンセル 53 clearTimeout(hida); 54 hida = null; 55 } 56 }
試したこと
上記のコードにあるような視線致道を検知した後、マウスカーソルの移動を遅延させて実行させるということを試しましたが、発生した問題にも記載したような現象が1秒遅れて発生するだけとなってしまいました。
補足
調べている中でpreventDefaultやdisableといったものを見つけたのですが、これらは自分の実現したいことはできないのではないかと思い、試しておりません。
もし、これらを使ってもできるという場合はご教示いただけるとありがたいです。
あなたの回答
tips
プレビュー