var spaceship = {
fps : 10,
speed : 1,
traveled : 0,
currency : 0,
initialize : function() {
this.update();
},
update : function() {
this.traveled += this.speed/this.fps;
setTimeout(this.update, 1000/this.fps);
this.render();
},
render : function() {
$("#spaceshipbg").attr("background-position", "0px "+this.traveled+"px");
}
};
$(document).ready(function() {
spaceship.initialize();
});
所以这是我的代码,每当我加载页面时,我都会收到行“this.render()”的错误。我在这里看不到问题,我可以从initialize函数成功调用this.update(),但是当我调用this.render()时它说它是未定义的
答案 0 :(得分:1)
调用initialize
时,会调用this.update()
。 update()
本身有效,即使是第一次调用this.render()
也是如此。但是,setTimeout
会调用update
,但不会在您的对象上调用它。因此,this
将不再引用您的对象。 this.render()
未定义。
有关该问题的详情,请read this。
解决方案可能如下所示:
update : function() {
var self = this;
this.traveled += this.speed/this.fps;
setTimeout(function() {
// Enforce the correct context
self.update();
}, 1000/this.fps);
this.render();
},