2013-07-31 35 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