自作のミュージックプレイヤーを制作しています。
そこで不明な点が現れたので質問します。
下記のコードをご覧ください。
//再生・停止event playbtn.addEventListener("click", () => { let musicpaused = player_box.classList.contains("paused"); musicpaused ? pausedMusic() : playMusic(); });
//停止event定義 function pausedMusic() { if(musicimg.classList.contains("roseReset")){ musicimg.classList.remove("roseReset"); } player_box.classList.remove("paused"); information.classList.remove("leftActive","rightActive"); playicon.setAttribute("class","fas fa-play"); musicimg.classList.remove("rote"); musicimg.classList.add("rosestop"); mainaudio.pause(); };
//再生event定義 function playMusic() { if(musicimg.classList.contains("roseReset")){ musicimg.classList.remove("roseReset"); } player_box.classList.add("paused"); information.classList.add("leftActive"); infoStart(); playicon.setAttribute("class","fas fa-pause"); musicimg.classList.remove("rosestop"); musicimg.classList.add("rote"); mainaudio.play(); };
const infoStart = () => { let stop = setInterval(function () { if(player_box.classList.contains("paused")){ infoEvent(); } },5000); }
//infoEvent定義 function infoEvent () { if(information.classList.contains("leftActive")){ information.classList.remove("leftActive"); information.classList.add("rightActive"); }else{ information.classList.remove("rightActive"); information.classList.add("leftActive"); } };
実際のプレビューは下記のコードペンに記載しています。(一度見ていただけると内容を把握できるかと思います)
CodePen
再生ボタンを押すことで文字がスムーズに繰り返し横へ移動します。
もう一度再生ボタンを押すことでinfoEvent()実装。
しかし実際はスムーズに横へ進まない。
試したこと
//停止event定義 function pausedMusic() { if(musicimg.classList.contains("roseReset")){ musicimg.classList.remove("roseReset"); } player_box.classList.remove("paused"); information.classList.remove("leftActive","rightActive"); infoJudge(); playicon.setAttribute("class","fas fa-play"); musicimg.classList.remove("rote"); musicimg.classList.add("rosestop"); mainaudio.pause(); };
//再生event定義 function playMusic() { if(musicimg.classList.contains("roseReset")){ musicimg.classList.remove("roseReset"); } player_box.classList.add("paused"); information.classList.add("leftActive"); infoJudge(); playicon.setAttribute("class","fas fa-pause"); musicimg.classList.remove("rosestop"); musicimg.classList.add("rote"); mainaudio.play(); };
const infoJudge = () => { let stop = setInterval(function () { if(player_box.classList.contains("paused")){ infoEvent(); }else{ clearInterval(stop); } },5000); }
僕の解釈ではpausedがある間はinfoEvent()続行。
pausedが無い場合は動作キャンセル。
再度、再生ボタンを押すことでinfoEvent()続行。
最初に再生ボタンを押したときのように横へスムーズに移動すると考えていた。
しかし実際は文字が戻ったりして横へスムーズに進まない。
解決したいこと
・playbtnを何回押してもスムーズに文字を横へ移動させたい
・setInterval以外で"文字をスムーズに横へ繰り返し移動する方法"があるのか知りたい
何卒よろしくお願いします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。