从对象Javascript内部调用的setInterval?
我正在尝试用Jvascript制作一个游戏引擎。到目前为止,我已经:从对象Javascript内部调用的setInterval?,javascript,object,canvas,game-engine,Javascript,Object,Canvas,Game Engine,我正在尝试用Jvascript制作一个游戏引擎。到目前为止,我已经: function gameEngine() { this.canvas = $('canvas')[0]; this.ctx = this.canvas.getContext('2d'); this.framerate = 20; this.resetCanvas = function() { this.ctx.fillStyle = 'red'; this.
function gameEngine() {
this.canvas = $('canvas')[0];
this.ctx = this.canvas.getContext('2d');
this.framerate = 20;
this.resetCanvas = function() {
this.ctx.fillStyle = 'red';
this.ctx.fillRect(0, 0, this.canvas.width, this.canvas.height);
};
this.loop = function() {
this.resetCanvas();
};
this.run = function() {
setInterval(this.loop, this.framerate);
};
}
new gameEngine();
但是画布没有出现;为什么?您从未调用过
setInterval
var ngin = new gameEngine();
ngin.run();
您从不调用
setInterval
var ngin = new gameEngine();
ngin.run();
共同解决办法:
或
然后您需要实际调用run
方法:
new gameEngine().run();
// or
function gameEngine() {
// snip...
this.run();
}
共同解决办法:
或
然后您需要实际调用run
方法:
new gameEngine().run();
// or
function gameEngine() {
// snip...
this.run();
}
初始化
gameEngine
后,需要调用run()
函数。您可能还希望将游戏引擎
存储在变量中
例如:
var myGameEngine = new gameEngine();
myGameEngine.run();
或者,如果不想调用run,请将
this.run()
粘贴在对象定义的末尾。这样就不需要存储对gameEngine
对象的引用,尽管您可能仍然需要存储引用以供以后参考。您需要在初始化gameEngine
后调用run()
函数。您可能还希望将游戏引擎
存储在变量中
const ngin = new gameEngine()
ngin.run()
例如:
var myGameEngine = new gameEngine();
myGameEngine.run();
或者,如果不想调用run,请将
this.run()
粘贴在对象定义的末尾。这样就不需要存储对gameEngine
对象的引用,尽管您可能仍然需要存储引用以供以后参考。感谢您提供的链接,这对我有很大帮助:)将在我可以的时候接受!您会使用bind方法还是closure方法?这有关系吗?再次感谢!我更喜欢Function.bind
,但是如果你打算支持IE的旧版本(呃,我不敢相信我在2013年还在谈论这个…),那么你需要感谢这个链接,这已经帮了很多忙:)会在我可以的时候接受!您会使用bind方法还是closure方法?这有关系吗?再次感谢!我更喜欢Function.bind
,但是如果你打算支持旧版本的IE(呃,我不敢相信我在2013年还在谈论这个…),那么你需要我不建议让构造函数做初始化值以外的任何工作(关于:第2段)。JSLint甚至会对此抱怨,我不建议让构造函数做初始化值以外的任何工作(关于:第2段)。JSLint甚至会对此抱怨
const ngin = new gameEngine()
ngin.run()