在Emberjs应用程序中使用requestAnimationFrame

时间:2014-02-16 12:27:15

标签: ember.js requestanimationframe

我正在将一个ThreeJS渲染的应用程序移植到Ember中,一切都没有问题。

原始的js有以下功能:

function animate(){
  requestAnimationFrame(animate);
  render();
}

Ember方法非常相似:

....
animate: function() {
  var view = this;
  requestAnimationFrame(view.animate);
  view.render();
},
....

我遇到的问题是在Emberjs视图中,第一次运行在第二次运行时正确映射到render方法,var view = this绑定到窗口对象,而不是Ember视图对象,所以动画方法不会运行。

有没有办法直接映射到Ember Object方法而不依赖于this

2 个答案:

答案 0 :(得分:0)

你在这里比较两个不同的东西,一个分配给散列上的属性的函数到一个作用于其父类的函数。

分配给属性的功能只能使用instance.property

运行

作用于其父级的函数可在其父级范围内的任何位置使用。

答案 1 :(得分:0)

animate: function(context) {
    window.requestAnimationFrame(function(){context.animate(context)});
    context.render();
},

并且在第一次调用.animate()时,您应该传递您感兴趣的上下文参数