我想用 canvas 在 html5 中创建一个游戏。
但是我之前有个性能问题
每次需要时都创建一个变量是否更好
var game = ...
var car = ...
var monster = ...
还是在脚本的开头只实例化一个 var
并执行以下操作会更好:
var game = {}
game.car = ...
game.monster = {}
game.monster.attack = function(){...}
谢谢你的帮助
最佳答案
正如在评论中看到的那样,您真的不需要对此感到太多疑惑。进行 JavaScript 游戏编程最重要的事情是您将拥有不同的计算机,这些计算机将具有不同的硬件。因此,如果您不对引擎进行插值,那么它们的帧率都会不同。这方面的一个例子是
// Updated drawing code for our objects
Rect.prototype.draw = function(context, interpolation) {
context.fillRect(this.x, this.y + this.velocity * interpolation, 30, 30);
};
Game.draw = function(interpolation) {
this.context.clearRect(0, 0, 640, 480);
for (var i=0; i < this.entities.length; i++) {
this.entities[i].draw(this.context, interpolation);
}
};
Game.run = (function() {
var loops = 0, skipTicks = 1000 / Game.fps,
maxFrameSkip = 10,
nextGameTick = (new Date).getTime(),
lastGameTick;
return function() {
loops = 0;
while ((new Date).getTime() > nextGameTick) {
Game.update();
nextGameTick += skipTicks;
loops++;
}
if (!loops) {
Game.draw((nextGameTick - (new Date).getTime()) / skipTicks);
} else {
Game.draw(0);
}
};
})();
这会将游戏逻辑保留在您的 Game.fps 中。您可能希望避免的另一件事是在绘图逻辑中使用 jQuery。这是因为 jQuery 的动画队列非常慢,最终动画会无限堆叠,从而使每一帧都有更大的延迟。
关于javascript - javascript 中的脚本性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13525319/