1

我花了很多时间使用 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 融合在一起吗?我在第 5 行代码中收到错误消息“无法将值转换为:HTMLImageElement、HTMLCanvasElement、HTMLVideoElement”。

任何帮助都非常感谢,因为在付出了这么多努力之后,我快要放弃这个项目了!

4

1 回答 1

2

在您的新窗口中,创建一个图像元素,并将源设置为您的 dataURL:

    var win=window.open();
    win.document.write("<img src='"+manikinImageUrl+"'/>");
于 2013-08-01T05:37:58.733 回答