Ответ 1
Используйте эту нотацию, она будет работать во всех браузерах, поддерживающих setLineDash
ctx.setLineDash([]);
Смотрите здесь скрипку: 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()
После первого набора строк, как представляется, reset любые свойства штриховки. Получите сплошные линии снова
На iPad2 работает Safari... кажется, полностью игнорируется, строки остаются разбитыми. Почему это? Кроме того, существует ли какой-либо другой способ правильного сброса черт...? (предпочтительно работающий кросс-браузер/ОС)
Спасибо
Используйте эту нотацию, она будет работать во всех браузерах, поддерживающих setLineDash
ctx.setLineDash([]);
Я столкнулся с подобным поведением, единственным способом сделать Safari reset в lineDash было использование context.restore().
Добавление
ctx.restore();
прежде чем рисовать ваши пунктирные линии будут работать.
Затем вы должны reset проделать другие действия, например lineWidth.