2013-07-31 20 views
1

我花了很多时间用KineticJS建立一个装扮游戏,而且我似乎已经陷入了最后的障碍。toDataUrl - 在IE中保存图像?

我创建了一个“快照”按钮,我想,让我的用户打印画布窗口或标签。这里是我的代码片段:

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浏览器为赢,而不是IE或Safari浏览器IOS。做了一些研究,我相信所有版本,如果IE平坦不支持这种功能?

我只是在寻找一个专家确认,如果这是真的还是假的。

也可能有人请告诉我如何融合的backgroundLayer和ManikinLayer它们打印出来之前在一起吗?我得到的errpr'价值无法转换为任何:HTMLImageElement,HTMLCanvasElement,HTMLVideoElement'的第5行代码。

任何帮助非常赞赏,因为我靠近已经投入这么多努力后废弃,另外添购的项目!

+1

我还不能肯定,但不存在衬层在那里,将这个功能添加到IE浏览器? – Pete

+0

我不知道,有吗? :) – Matt

+0

您可以尝试:http://code.google.com/p/fxcanvas/或http://code.google.com/p/explorercanvas/ – Pete

回答

2

在你的新窗​​口,创建与源图像元素设置为您dataURL:

var win=window.open(); 
    win.document.write("<img src='"+manikinImageUrl+"'/>"); 
+0

哦,哇,工作完美!非常感谢。 – Matt

+0

唯一的其他突出问题是梳理所有图层,按照上面的代码我只是打印一个(人体模型)图层,但我还想在那里的背景? – Matt

+0

您是否试过针对舞台而不是每个单独的图层?你也可以做stage.toDataURL(),而不仅仅是图层。舞台应该包含所有图层吗? – projeqht