基本上我写了一个函数:
function animation(){ setTimeout( function(){ requestAnimationFrame(animation); if (player.currentFrame == player.frames) { player.currentFrame = 0; } else { player.currentFrame++; } } , 1000 / 15); }
我试图用这段代码调用它
animation(fps);
我试着这样做:
function animation(fps){ setTimeout( function(){ requestAnimationFrame(animation); if (player.currentFrame == player.frames) { player.currentFrame = 0; } else { player.currentFrame++; } } , 1000 / fps); }
并试图用animation(30)
调用它
但它不起作用。我尝试过像这样的搜索主题,但不是它们就像我想要的那样。
任何帮助将不胜感激! :)
答案 0 :(得分:0)
setTimeout
只会在时间结束后调用该函数一次,因此,除非您再次使用animation
致电fps
,否则它只会运行一次并完成。您可以使用setInterval
每隔1000/fps
毫秒调用该函数。
var frame = 0;
animation(20);
function animation(fps){
console.log(fps)
setInterval(
function(){
console.log("A");
document.getElementById("sp1").innerHTML = frame;
frame++;
}
, 1000 / fps);
}
示例小提琴:http://jsfiddle.net/Up4Cq/
或者如果你想使用setTimeout,你需要再次调用animation
函数:
function animation(fps){
console.log(fps)
setTimeout(
function(){
console.log("A");
document.getElementById("sp1").innerHTML = frame;
frame++;
animation(fps);
}
, 1000 / fps);
}
以下是setTimeout的小提琴:http://jsfiddle.net/Up4Cq/1/
答案 1 :(得分:0)
您是否尝试过此语法
function animation(fbs){
requestAnimationFrame(animation);
if (player.currentFrame == player.frames) {
player.currentFrame = 0;
} else {
player.currentFrame++;
}
setTimeout(function(){animation(fbs) }, 1000 / fbs);
}
我将代码从setTimeout('animation(fbs)', 1000 / fbs);
更改为setTimeout(function(){animation(fbs) }, 1000 / fbs);