我在将画布从缓冲区画布复制到页面上的画布时遇到了一些困难。到目前为止,我已经构建了一个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