我正在用一个英雄人物创造一个游戏,他的任务是收集水果遍布画布。对象内设置超时功能
事情是,每个水果在画布上都有自己的到期时间。 例如,香蕉会出现5秒,橙色会出现10秒等等。
我试图做的事情是创建一个对象,该对象的每个实例都有一个定时器,它在选定后改变布尔值时间
我的代码看起来是这样的:
function apple(timeToStay,score){
this.kind = "apple";
this.timeTostay = timeToStay;
this.score=score;
this.imgsrc = "images/apple.png";
this.x = 32 + (Math.random() * (canvas.width - 64));
this.y = 32 + (Math.random() * (canvas.height - 64));
this.removeMe = false;
setTimeout(function() { this.removeMe=true; }, timeToStay*1000);
return this;
}
,你可以看到我以为设置超时与实例将例如5秒后火,如果我创造了它的VAR OBJ =苹果(5 ,5)
在开始obj.removeMe应该是假的,但5秒后应该变成真。
'this'是功能范围的。所以它在超时功能内部发生了变化。在构造函数中使用'var _this = this',在超时时使用'_this'。 – Oriol