javascript - Canvas 尺寸已关闭

标签 javascript html object html5-canvas

我读到,使用多个 Canvas 而不是将所有内容都绘制到一个 Canvas 上会更有效,因此在尝试此操作时,我注意到我正在以双倍形式编写代码。所以我想到创建一个包含所有公共(public)变量的函数。代码如下:

function CanvasElement(id, width, height, parent){
     this.id = id;
     this.width = width;
     this.height = height;
     this.parent = parent;
     this.canvas = document.createElement('canvas');

     document.getElementById(parent).appendChild(this.canvas);
}

但是当我像这样使用这个函数时:

/*Parameters: id, width, height, parent element*/
var canvasBg = new CanvasElement('canvasBg', 640, 480, 'animation');

这就是问题所在:最终的 Canvas 元素比它应该的要小。如果要“正常”地将 Canvas 置于函数之外,那么最终的 Canvas 将为 640x480px。然而,当使用该函数创建元素时,尺寸要小得多。

关于为什么会发生这种情况或如何补救有什么想法吗?

我不想重写这些行来创建多个 Canvas 。我宁愿有一个可以创建的对象,并只在参数中给出属性。我还想知道我在如何实现这样的事情上是否走在正确的轨道上。非常感谢有关如何改进或在必要时应用不同方法来实现相同结果的建议。

最佳答案

您似乎并未实际将宽度或高度分配给 Canvas 本身,而只是将其包装的 CanvasElement 对象分配给 Canvas 。

试试这个:

function CanvasElement(id,width,height,parent) {
    this.canvas = document.createElement('canvas');
    this.canvas.id = id;
    this.canvas.width = width;
    this.canvas.height = height;
    document.getElementById(parent).appendChild(this.canvas);
}

关于javascript - Canvas 尺寸已关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12760726/

相关文章:

javascript - socket.io 了解何时达到最大重新连接尝试限制

javascript - 根据一些参数遍历 HTML 表格

mysql - 如何使用 Express 访问 get 请求的结果(对象)?

java - Java 是否提供了任何构造来找出对象的大小?

javascript - 一起滚动两个 ext.TabPanel

javascript - XMLHttpRequest.onreadystatechange 的上下文问题

javascript - 如何将一个div的内容设置为另一个div的内容

Javascript:将对象值数组放入div

javascript - 从返回的 Promise 中获取 PromiseValue

javascript - 菜单关闭 Canvas 错误移动