質問: true) { cmr(); } ~ } ``` ### 試したこと clearTimeoutを用いてループを終了させる方法など考えられることは試したのですが移動を停止させることが出来ませんでした。
回答: > > 視線移動を検知した時にマウスカーソルが動き続け、ループ中も瞬きを検出できるようにはなったのですが、瞬きを検知しても停止せずに動き続けてしまう状態です。 > > > 現状のコードですと、瞬きの検知後でも`setTimeout`で登録したタイムアウト時の関数が呼ばれてしまい、マウスは依然として右へ移動してしまうと思います。瞬きを検知したら`setTimeout`で始動したタイマーをキャンセルすれば、ご要望の動きになりませんでしょうか。 修正案としてのコードを以下に示してみます。ただ、私自身はJINS MEMEを試せる環境に無いので、動作確認はできていません。 ※JINS MEMEに関しては「外観は普通のメガネで、アプリを造れるウェアラブルデバイスとして面白いのではないか。」と発売当初から興味を抱き、情報をあたっていてはみたものの、実機には触れて居ない状況です。そんな訳で推測での回答すみません。 ``` // リアルタイムモードを処理する部分のスコープ外で宣言 var tid = null; //リアルタイムモードを処理する部分 const realtimeModeCB_dev1 = data => { var mouse = robot.getMousePos(); let right = false; let date_now = Date.now(); var cmr = function() { robot.moveMouse(mouse.x += cm, mouse.y); tid = setTimeout(cmr, 250); }; if (data.eyeMoveRight > 1) { right = true; console.log("Right"); } if (data.blinkStrength > 40) { // 瞬きを検知 console.log("stop") right = false; } if (right == true) { // 引き続き右へ移動中 cmr(); } else { if (tid != null) { // 瞬きを検知、かつタイマーセット済みであればキャンセル clearTimeout(tid); tid = null; } } ~ } ```