我花了很多时间使用KineticJS制作装扮游戏,我似乎已经陷入了最后的障碍。
我创建了一个“快照”按钮,我想让我的用户将画布打印到窗口或标签。以下是我的代码片段:
Camera.prototype.takeSnapshot = function()
{
var backgroundLayer = this.controller.view.getBackgroundLayer();
var backgroundContext = backgroundLayer.getContext();
var manikinLayer = this.controller.view.getManikinLayer();
var manikinCanvas = manikinLayer.getCanvas();
//combine background and 'manikin' layers
backgroundContext.drawImage(manikinCanvas,0 ,0);
//open data URL in new window
var manikinImageUrl = backgroundLayer.getCanvas().toDataURL('image/png');
window.open(manikinImageUrl);
};
现在我确定你已经猜到了,这适用于FF,Chrome,Safari for Win,但不适用于IE或IOS Safari。做过一些研究我相信所有版本如果IE不支持这个功能?
我只是在寻找专家来确认这是否属实。
也有人可以告诉我如何在打印出来之前将backgroundLayer和ManikinLayer融合在一起吗?我得到errpr'值无法转换为第5行代码中的任何一个:HTMLImageElement,HTMLCanvasElement,HTMLVideoElement'。
任何帮助都非常感激,因为我在投入了大量精力后接近了项目!
答案 0 :(得分:2)
在新窗口中,创建一个图像元素,并将源设置为dataURL:
var win=window.open();
win.document.write("<img src='"+manikinImageUrl+"'/>");