我在將畫布從緩衝區畫布複製到頁面上的畫布時遇到了一些困難。到目前爲止,我已經構建了一個Render對象,一個Level對象,並且我有我的主遊戲循環(目前只是一個啓動函數)。如何將隱藏畫布上的內容複製到可見畫布上?
我能夠寫入Render對象的緩衝區畫布(如果我添加一個document.body.append()語句畫布成功地附加到具有必要內容的文檔),但我不能從緩衝畫布到我的主要畫布。見下文對我的代碼片段:
function Renderer(bufferWidth, bufferHeight) {
var c=document.createElement('canvas');
var ctx=c.getContext('2d');
c.width=bufferWidth;
c.height=bufferHeight;
this.getBufferContext = function() { return ctx; };
this.getBufferElement = function() { return c; };
this.drawToCanvas = function(canvasCtx) {
canvasCtx.drawImage(c,0,0);
};
}
var c = document.getElementById('mycanvas');
var ctx = c.getContext('2d');
var render = new Renderer(c.width, c.height);
var level1 = new Level('images/imagequality.png');
level1.Draw(render.getBufferContext());
render.drawToCanvas(ctx);
注意,渲染是在一個單獨的文件,並在我的HTML頁面中使用script標籤加載。
如前所述,drawToCanvas()函數似乎沒有成功將數據從一個畫布複製到另一個畫布。追加我的源畫布確認它包含預期的數據。
編輯:我在下面列出了我的關卡代碼。
function Level(mapname) {
var map=new Image();
map.src=mapname;
this.Draw = function(renderer) {
map.onload = function() { renderer.drawImage(map,0,0); };
};
}
感謝您的反饋。如果您有興趣,我已將我的關卡代碼附加到原始文件。在那裏沒有什麼特別的事情發生......到目前爲止,它只是向提供的畫布上下文(渲染器)繪製單個圖像。 FWIW我在我的HTML頁面中的body.onload函數中調用了函數launch()中的繪圖代碼(創建上下文,渲染器,級別等)。 – RavB 2012-02-17 21:17:15