2014-06-28 138 views
6

我想知道如果canvas.getContext("2d")保證每次調用時都返回相同的上下文實例。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得到從上下文畫布上。很好的提示。

+2

請注意,您的代碼中的'canvas'返回一個jquery對象而不是DOM elem。對於性能,您可能會自然地創建畫布元素。 – hexalys

回答

8

對於任何一個畫布元素,canvas.getContext("2d")總是返回該一個畫布元素的一個且僅有的上下文。

如果您使用document.createElement("canvas")(或jquery等價物)創建一個新的畫布元素,那麼該新畫布上的getContext將爲該新畫布返回唯一的上下文。

+1

驗證此答案的源代碼:*返回上次使用此相同參數調用方法時返回的對象。* [Source](https://www.w3.org/TR/html5/scripting-1。 HTML DOM#帆布-的getContext) –

相關問題