画布setLineDash和lineDashOffset不在iOS/Safari中重置?

Cod*_*CDM 13 javascript safari html5 canvas ios

请看这里的小提琴:http://jsfiddle.net/mYdm9/4/

在我的电脑上,做

ctx.lineWidth=20;
ctx.setLineDash([20,30]); 
ctx.lineDashOffset=10;
ctx.beginPath();
ctx.moveTo(150,150);
ctx.lineTo(240,240);
ctx.lineTo(180,40);
ctx.stroke();
ctx.closePath()
Run Code Online (Sandbox Code Playgroud)

给出第一组线,带有所需的破折号/偏移量

现在用

ctx.setLineDash([0,0]); 
ctx.lineDashOffset=0
Run Code Online (Sandbox Code Playgroud)

在下一批命令中:

ctx.beginPath();
//resets line dash... except on iOS Safari it seems...
ctx.setLineDash([0,0]); 
ctx.lineDashOffset=0;
ctx.moveTo(0,300);
ctx.lineTo(0,250);
ctx.lineTo(100,400);
ctx.lineTo(200,300);
ctx.stroke();
ctx.closePath()
Run Code Online (Sandbox Code Playgroud)

在第一组线之后似乎重置任何破折号属性.再次获得实线

在运行Safari的iPad2上......它似乎完全被忽略了,线条保持虚线.为什么是这样?还有,还有其他方法来正确重置行破折号......?(最好是跨浏览器/操作系统)

谢谢

小智 15

使用此表示法,它将适用于支持setLineDash的所有浏览器

ctx.setLineDash([]);
Run Code Online (Sandbox Code Playgroud)


小智 0

我遇到了类似的行为,让 Safari 重置 lineDash 的唯一方法是使用context.restore()

添加

ctx.restore();
Run Code Online (Sandbox Code Playgroud)

在绘制非虚线之前就可以了。

然后,您将不得不重新设置其他内容,例如线宽。