Javascript 带回调函数的requestAnimationFrame?
单击按钮后,我正在画布上设置一些动画。动画完成后,我想调用一个函数,该函数作为参数传递到初始化requestAnimationFrame的函数中 这可能吗 我尝试了各种方法,包括匿名函数等Javascript 带回调函数的requestAnimationFrame?,javascript,Javascript,单击按钮后,我正在画布上设置一些动画。动画完成后,我想调用一个函数,该函数作为参数传递到初始化requestAnimationFrame的函数中 这可能吗 我尝试了各种方法,包括匿名函数等 var anim = false; var game = new Game(); function Game(){ this.turn = 1; this.move = function(){ this.animate(game.advanceTurn); } this.adva
var anim = false;
var game = new Game();
function Game(){
this.turn = 1;
this.move = function(){
this.animate(game.advanceTurn);
}
this.advanceTurn = function(){
this.turn++;
}
this.animate = function(callback){
var done = false;
anim = window.requestAnimationFrame(game.animate);
// animation code here
if (done){
window.cancelAnimationFrame(anim);
anim = false;
callback();
}
}
i、 点击按钮,制作动画,动画完成,调用game.advanceTurn
在记录提供的参数时,控制台将首先记录我的回调函数,然后将其替换为我认为符合rAF描述的MDN描述的计时器度量。您可以使用bind来传递回调函数。同时,您还可以传递此信息,以便保留对当前游戏对象实例的引用:
函数游戏{
var i=0;
var anim=假;
这1.turn=1;
this.move=函数{
this.animatethis.advanceTurn.bindthis;
}
this.advanceTurn=函数{
这个.turn++;
}
this.animate=functioncallback{
var done=false;
anim=window.requestAnimationFramethis.animate.bindthis,回调;
//动画代码在这里
console.logi++;
如果i>5{
window.cancelAnimationFrameanim;
i=0;
动漫=假;
回调;
}
}
}
新游戏。动画功能{
console.log'callback received';
}; 您可以使用bind来传递回调函数。同时,您还可以传递此信息,以便保留对当前游戏对象实例的引用:
函数游戏{
var i=0;
var anim=假;
这1.turn=1;
this.move=函数{
this.animatethis.advanceTurn.bindthis;
}
this.advanceTurn=函数{
这个.turn++;
}
this.animate=functioncallback{
var done=false;
anim=window.requestAnimationFramethis.animate.bindthis,回调;
//动画代码在这里
console.logi++;
如果i>5{
window.cancelAnimationFrameanim;
i=0;
动漫=假;
回调;
}
}
}
新游戏。动画功能{
console.log'callback received';
}; 你没有正确地编写你的课程
在游戏类中,您使用的是变量游戏,但您应该使用这个
比如说,
window.requestAnimationFrame(game.animate);
应该是
window.requestAnimationFrame(this.animate);
你为什么要把动画设为假的?请求动画帧
此.turn应该从0开始,而不是从1开始
move调用animate是没有意义的
事实上,你试图使用的结构是在给你挖坟墓
我认为你最好重新开始,第二次做对
你没有正确地编写你的课程
在游戏类中,您使用的是变量游戏,但您应该使用这个
比如说,
window.requestAnimationFrame(game.animate);
应该是
window.requestAnimationFrame(this.animate);
你为什么要把动画设为假的?请求动画帧
此.turn应该从0开始,而不是从1开始
move调用animate是没有意义的
事实上,你试图使用的结构是在给你挖坟墓
我认为你最好重新开始,第二次做对