【发布时间】:2012-04-17 13:03:24
【问题描述】:
我今天从 Chrome 版本 17 升级到 Chrome:18.0.1025.142。
我注意到我正在开发的一个网络应用程序有一个奇怪的蓝色层,它在加载时出现,然后在您开始滚动时消失。
我已经在我的 JS 中追踪到以下几行:
context.canvas.width = canWidth;
context.canvas.height = canHeight;
canWidth 和 canHeight 是动态生成的。
注释掉这些行会停止渲染蓝色图层,但这不是解决方法,因为我需要使用动态生成的值来控制画布宽度/高度。
我还尝试将 context.canvas.width 和 context.canvas.height 硬编码为 600,这也产生了蓝层问题。
这在以前版本的 Chrome 上不是问题,我在 FireFox 中也没有任何问题。
对可能出现的问题有什么建议吗?
编辑:
这是上面的代码块(nodeLeft和nodeTop在其他地方生成):
context.clearRect ( 0 , 0 ,canWidth, canHeight );
context.canvas.width = canWidth;
context.canvas.height = canHeight;
context.beginPath();
context.moveTo(x, y);
context.lineTo(nodeLeft, nodeTop);
context.strokeStyle = "#000000";
context.lineCap = "round";
context.stroke();
【问题讨论】:
-
您是在加载时执行一次添加的代码还是在 mousemove/mouseup 时执行一次添加的代码?
-
加载时,然后在拖动节点时随后的鼠标移动。
-
调整画布大小比写入画布要慢很多。如果您在鼠标移动时这样做,那可能就是问题所在。设置画布大小后,应该只需要清除画布大小的矩形即可。
标签: javascript google-chrome canvas html5-canvas