私は、requestAnimationFrameを使ってアニメーションをループする方法を説明しているvideoを見ました。私はそれを複製しようとし、私は非常に近いと信じているが、重要な点を欠いている。 "ボックス"をクリックすると、onclick = "loopKeyFrame()"がアクティブになり、runKeyFrame()が1回だけ呼び出されます。JavascriptでrequestAnimationFrameループを呼び出す方法は?
私の意図は、このコードでrunKeyframe()を無限にループすることでした。私はそれが永遠に実行するためにCSSに "無限"を置くことができることを知っているが、それはポイントではない。ビデオで使用されていたようにrequestAnimationFrameを使用しようとしています。
私のコードCodePen
<html>
<head>
<title>RequestAnimation Lesson</title>
<style>
body {
background-color: grey;
}
#box {
position:relative;
width:30px;
border:1px solid blue;
background-color:blue;
height:10px;
top:0px;
left:0px;
}
@keyframes myMove {
0%{left:0%;}
50%{left:95%;}
100%{left:0%;}
}
</style>
<script>
function runKeyFrame() {
document.getElementById("box").style.animation = "myMove 4s";
}
function loopKeyFrame() {
runKeyFrame();
requestAnimationFrame(loopKeyFrame);
}
</script>
</head>
<body>
<div id="box" onclick="loopKeyFrame()"></div>
</body>
</html>
深刻な修正をありがとうございました。しかし、私は貴重な教訓を学びました。あなたは@keyframeでrequestAnimationFrameを使用することはできません...それはあなたができるようにそれを固定した場合、非常に便利な思考になります – Ghoyos
なぜあなたはsetTimeoutでラップしたらrAFの使用? – Kaiido
@Kaiido次の再描画の前に、ブラウザがアニメーションを実行するように要求します。 – guest271314