javascript - 从不在 DOM 树中的 jquery 对象复制 Canvas 节点

标签 javascript jquery oop prototypal-inheritance

最近一段时间我一直在研究游戏引擎,最近我添加了一个我称之为影子 DOM 的东西。它只是一个包含 div 的 jQuery 对象,因此我可以向其附加内容。每次经过一帧时,影子 DOM 的内容都会被复制到多个视口(viewport)。我的问题是我无法复制 Canvas 元素的状态。

有没有办法在不必更新每个视口(viewport)中的每个 Canvas 元素的情况下解决这个问题?

最佳答案

我发现最好的方法是创建另一个 Canvas ,然后按以下方式将旧 Canvas 中的数据直接添加到新 Canvas 中:

//Create a blank canvas to apply the old canvas to
var newCanvas = jQuery('<canvas></canvas>'),
    newCanvasContext = newCanvas.getContext('2d');

//size the new canvas to mirror the old canvas
newCanvas[0].width = oldCanvas[0].width;
newCanvas[0].height = oldCanvas[0].height;

//copy the old canvas onto the new canvas with drawImage();
newCanvasContext.drawImage(oldCanvas[0], 0, 0, oldCanvas[0].width, oldCanvas[0].height);

我发现仅仅复制 Canvas 节点是不够的以上内容是复制 Canvas 及其其数据所必需的。

关于javascript - 从不在 DOM 树中的 jquery 对象复制 Canvas 节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6050301/

相关文章:

javascript - jQuery、CORS、JSON(无填充)和身份验证问题

javascript - 移动设备/平板电脑上的响应式网站、页眉和页脚宽度问题

javascript - 无法隐藏我使用 javascript 和 jquery 生成的 html 元素

oop - 这些哪个设计更好?

javascript - 在 JavaScript 中模拟 super

javascript - 在 Android 上获取混合应用程序( ionic )的日志

javascript - 如何在表格的几列上创建文本跨度?

javascript - 如何按顺序执行jquery函数?

javascript - jquery计算BMI

oop - MATLAB 面向对象 : How do I call a method on an object of class A from inside a method in an object of class B?