- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
单击按钮后,我将在 Canvas 上制作一些动画。动画完成后,我想调用一个函数,该函数作为参数传递给首先初始化 requestAnimationFrame
的函数。
这可能吗?
我尝试了各种方法,使用匿名函数等。
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();
}
}
即单击按钮,制作动画,动画完成,调用 game.advanceTurn。
当记录提供的参数时,控制台将首先记录我的回调函数,但随后将其替换为我认为是计时器测量的内容(符合 rAF
描述的 MDN 描述)。
最佳答案
您可以使用bind
来传递您的回调函数。同时你也可以传递this
,这样你就保留了你对当前Game对象实例的引用:
function Game(){
var i = 0;
var anim = false;
this.turn = 1;
this.move = function(){
this.animate(this.advanceTurn.bind(this));
}
this.advanceTurn = function(){
this.turn++;
}
this.animate = function(callback){
var done = false;
anim = window.requestAnimationFrame(this.animate.bind(this, callback));
// animation code here
console.log(i++);
if (i>5){
window.cancelAnimationFrame(anim);
i = 0;
anim = false;
callback();
}
}
}
new Game().animate(function () {
console.log('callback received');
});
关于javascript - 带回调函数的requestAnimationFrame?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39498825/
这个问题在这里已经有了答案: Call native javascript function that has been "erased" by the web page (1 个回答) 关闭 4
我有一个 UITableViewController。 但是当我滚动到顶部时,可以在状态栏上看到表格数据,如下所示: 我怎样才能绕过这个时刻? 最佳答案 您可以使用下一个代码段隐藏状态栏: overr
我想让一个 View 显示在另一个 View 的顶部。 这是我的 View 层次结构: 基本上我想把按钮(重新开始)放在属于 PageViewController 的 UIImageView 前面。所
这是一个代码片段 tips = sns.load_dataset("tips") g = sns.FacetGrid(tips, col = 'time') g = g.map(plt.hist, "
下面的 php 数据库查询(来自 phpMyAdmin)只将一个值(第一个或最旧的)带回 amcharts: set_no_cache(); // do whatever you wa
我正在使用 mootools 从一个元素中获取 id,但它不起作用,它返回了 id 和 null。 $$(".obj").addEvent("click",function(){ var o
从内存中,微软拿了 AppDomain离开了,这个机制已经被关闭了。 现在突然发现AppDomain回来了: Assembly System.Runtime.Extensions, Version=4
我是一名优秀的程序员,十分优秀!