前提・実現したいこと
JavaScript初心者です やろうとしてることがうまくいきません
div内でマウスを動かし、その座標を記録、再生しオブジェクトを移動するといったものです
下記ソースコードを実行すると一見動いてるように見えるのですが、
一瞬style.topとstyle.leftが0のような状態になり、オブジェクトに座標にちらつきが発生します
このちらつきはなぜ発生するのでしょうか?
原因がわかる方いましたら回答お願いいたします
該当のソースコード
<div id="field" style="position:relative;width:550px;height:550px;background:yellow"> <font id="xy" style="width:50px;height:50px;position:absolute"></font></div> <script> function p() { //座標を配列に入れる x.push(event.offsetX); y.push(event.offsetY); } var x=[]; var y=[]; var j=0; function rec(){ if(j<1){//1秒間のみの座標を記録 setTimeout("rec()",1000); j++; }else{ //1秒たったらply()で再生 j=0; ply(); rec(); } } var i=0; function ply(){ //読み込んだ座標へObjectを移動させる if(x.length>i){ xy.style.left=x[i]+'px'; xy.style.top=y[i]+'px'; setTimeout("ply()",1); xy.innerText="X:"+x[i]+" Y:"+y[i]; i++; } } window.onload=function(){ xy.style.transition = "all 0.001s"; field.addEventListener('mousemove', p); rec(); } </script>
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/06/06 00:46
2021/06/06 04:15
2021/06/06 04:18