2014-05-23 38 views
1

我正在使用kineticJS生成類似於canvas元素內部的可旋轉餅圖字符的項目。KineticJS:Chrome更新後畫布消失

一切正常,直到最後一次Chrome更新發布。自從更新到版本35.0.1916.114以來,我在Chrome中的畫布只是空白。 通過查看開發者控制檯上的代碼,我可以看到生成的寬度和高度設置爲0(只是將此值更改爲可查看的大小不會影響xD)。所以我猜畫布裏面的內容不僅僅是隱藏的,而且根本不會生成。

自更新以來,有人有同樣的問題嗎?鉻團隊是否改變了可能會導致這種情況的任何事情? (到目前爲止,我還沒有在變更日誌中找到明顯的東西..)

+0

你正在使用哪個版本的kineticJS? – Cobaltway

+0

kineticJS 4.3.0。 nzn的解決方案有效。非常感謝你! – TiPE

回答

2

警告:這是一個反覆試驗的解決方案,適用於我!我不明白內部,所以這可能是錯誤的。 這個新版本的Chrome實現了一種新類型的畫布對象:Path2D(在此處瞭解更多:http://www.rgraph.net/blog/2014/march/an-example-of-html5-canvas-path2d-objects.html)和圍繞3849行的Kinetic代碼中,有一個繪製線條的方法(stroke),它重寫上下文的筆畫功能,上下文本身作爲參數。經過一些調試後,我發現它是卡住的地方。 Chrome 35版拋出一個非常無益的錯誤,但在加那利它說

無法執行對「CanvasRenderingContext2D」撫摸':參數1的類型不是「Path2D」

而且這不是高興,因爲作爲參數傳遞的上下文(請參見下文)是一個CanvasRenderingContext2D對象,而這個新版本的Chrome只會使其具有Path2D對象。我不知道爲什麼動力學要求的上下文參數(或者:爲什麼新的Chrome剛剛呈現上次嘗試形狀平局),但如果你改變(約3849線動力學4.0.0)行:

context.stroke(context); 

try{ 
     context.stroke(context); 
} catch(e) { 
     context.stroke(); 
} 

然後它工作。 (不是一個非常技術性的解釋,我知道但它適用於我...)