javascript - javascript 中的脚本性能

标签 javascript performance

我想用 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/

相关文章:

javascript - 防止覆盖提供的内部函数的方法

javascript - 我收到此错误 : firebase. INTERNAL.registerAppHook 不是函数,为什么?

javascript - 使用 Javascript 的等高列

javascript - 有关 async/await 与 Promises 和事件循环的性能问题

performance - 如何减少我网站上的“第一个字节的时间”?

javascript - JS 压缩 - PageSpeed(Google Chrome 报告)

database - 优化写入繁重的 Oracle 应用程序?

ios - containsString:是否足够快,足以在每次输入字符时用于搜索?

javascript - Canvas 与 SVG 之声波图像交互

javascript - 有没有办法将这个 jquery 代码转换为 javascript?