[英]stop javascript loop, setTimeout
此動畫應在10秒后停止播放(停止下雪)。 我在底部添加了一個函數,但實際上是在10秒后開始動畫,而不是在10秒后停止動畫。
我只希望它總播放10秒鍾,然后立即開始播放,請參閱我的codePen來了解我的意思。
setTimeout(function() {
createSnow(20);
loop();
}, 10000)
這是一個CodePen來了解我的意思: https ://codepen.io/celli/pen/XzzjRW
您要做的是創建一個“計時器”,查找開始時間和當前時間之間的時差。
我不確定您是否要在循環內createSnow(20)
,因此我將其放在前面作為初始化。
createSnow(20);
const start = new Date();
while(new Date() - start < 10000) {
loop();
}
你近了 您只需要一種方法來告訴系統停止動畫循環。 看到我的codepen: https ://codepen.io/intervalia/pen/zPPoBZ
我添加了一個變量來指示動畫是否應該發生:
var animating = true;
停止動畫的例程:
function stopAnimation() {
animating = false;
//Add something in here to clear the screen
}
動畫循環中的驗證檢查:
function loop() {
if (animating) {
draw();
update();
animFrame(loop);
}
}
並更改超時以關閉動畫:
createSnow(150);
loop();
setTimeout(stopAnimation, 10000);
很棒的動畫!
使用cancelAnimationFrame
。
聲明cancelAnimFrame
:
var cancelAnimFrame =
window.cancelAnimationFrame ||
window.mozcancelAnimationFrame ||
window.webkitcancelAnimationFrame ||
window.mscancelAnimationFrame;
更新loop
功能:
var animId;
function loop() {
draw();
update();
animId = animFrame(loop);
}
並使用animId
停止動畫。 (如前所述,開始下雪應該超出setTimeout
。)
createSnow(20);
loop();
setTimeout(function() {
cancelAnimFrame(animId)
}, 1000)
唯一需要更改的是對代碼plz進行少許更改,請參見下面的代碼:
var timeOut = setTimeout(function() {
createSnow(20);
loop();
}, 10000);
clearTimeout(timeOut);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.