canvas.getContext(" 2d")每次都返回相同的实例吗?

时间:2014-06-28 23:48:56

标签: javascript html5 canvas

我想知道canvas.getContext("2d")每次被调用时是否保证返回相同的上下文实例。

我想知道的原因是因为我试图关注the advice in this answer,以便我的缩放画布看起来不模糊。但是我在游戏中创建了许多画布,因此我想制作一个可供所有人使用的createCanvas函数。我希望它看起来像这样:

function createCanvas(x, y) {
  canvas = $("<canvas width='" + x + "' height='" + y + "'></canvas>")[0];
  ctx = canvas.getContext("2d");
  ctx.imageSmoothingEnabled = false;  //modify the context
  return canvas;  //return the canvas, not the ctx
}

如果canvas.getContext("2d")每次都返回一个新实例,则不会产生任何影响。我需要返回画布,因为其他代码使用它。

这个问题有更好的解决方案吗?如果是这样,我会接受并重命名我的头衔。


编辑:在我问到我发现this article后,您可以通过ctx.canvas从上下文中获取画布。非常好的提示。

1 个答案:

答案 0 :(得分:11)

对于任何一个canvas元素,canvas.getContext("2d")总是返回该canvas元素的唯一上下文。

来源:HTML 5.2 §4.2 Scripting

  

返回与上次使用相同的第一个参数调用方法时返回相同的对象。


如果使用document.createElement("canvas")(或等效的jquery)创建一个新的canvas元素,那么新画布上的getContext将返回该新画布的唯一上下文。