我想知道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
从上下文中获取画布。非常好的提示。
答案 0 :(得分:11)
对于任何一个canvas元素,canvas.getContext("2d")
总是返回该canvas元素的唯一上下文。
返回与上次使用相同的第一个参数调用方法时返回相同的对象。
如果使用document.createElement("canvas")
(或等效的jquery)创建一个新的canvas元素,那么新画布上的getContext将返回该新画布的唯一上下文。