请参阅此处的小提琴: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()
给出第一组线,带有所需的破折号/偏移量
现在用
ctx.setLineDash([0,0]);
ctx.lineDashOffset=0
在下一批命令中:
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()
第一组线后似乎重置了任何破折号属性。再次获得实线
在运行Safari的iPad2上......似乎完全被忽略了,线条保持虚线。为什么是这样?还有,还有其他方法来正确重置行破折号......? (最好是跨浏览器/操作系统)
由于
答案 0 :(得分:15)
使用此表示法,它将适用于支持setLineDash的所有浏览器
ctx.setLineDash([]);
答案 1 :(得分:0)
我遇到了similair行为,让Safari重置lineDash的唯一方法是使用 context.restore()。
添加
ctx.restore();
在绘制非虚线之前将起作用。
然后你必须重置其他东西,比如lineWidth off course。