KineticJS:Chrome更新后Canvas消失了

时间:2014-05-23 13:53:41

标签: javascript google-chrome canvas kineticjs

我正在开发一个项目,使用kineticJS在canvas元素中生成类似可旋转饼图的内容。

一切运作良好,直到最后一次Chrome更新发布。自从更新到版本35.0.1916.114后,我在Chrome中的画布只是空白。 通过查看开发人员控制台上的代码,我可以看到生成的宽度高度设置为0(只是将此值更改为可查看的大小不会生效xD)。所以我猜画布内的内容不仅仅是隐藏的,而且根本没有生成。

自更新以来有没有人遇到同样的问题? Chrome团队是否改变了可能会受此影响的任何事情? (到目前为止,我还没有在更改日志中找到明显的东西..)

1 个答案:

答案 0 :(得分:2)

警告:这是一个适用于我的试错法解决方案!我不明白内部因素,所以这可能是错的。 这个新版本的Chrome实现了一种新类型的画布对象:Path2D(在此处了解更多:http://www.rgraph.net/blog/2014/march/an-example-of-html5-canvas-path2d-objects.html)和围绕第3849行的Kinetic代码中,有一种线条绘制方法({{1} })覆盖上下文的笔画函数并将上下文本身作为参数。经过一些调试后我发现它就是卡住的地方。 Chrome 35引发了一个非常无益的错误,但在Canary中它说了

  

无法执行'描边' on' CanvasRenderingContext2D':参数1的类型不是' Path2D'

它并不高兴,因为作为参数传递的上下文(见下文)是一个stroke对象,而这个新版本的Chrome只会使用CanvasRenderingContext2D个对象。我不知道为什么Kinetic需要上下文作为参数(或者可能:为什么新Chrome只渲染最后一次尝试的形状绘制)但是如果你改变了线(Kinetic 4.0.0绕3849行):

Path2D

context.stroke(context);

然后它的工作原理。 (我知道这不是一个非常技术性的解释,但它对我有用......)