Подтвердить что ты не робот

Canvas setLineDash и lineDashOffset НЕ перезагружается в iOS/Safari?

Смотрите здесь скрипку: 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... кажется, полностью игнорируется, строки остаются разбитыми. Почему это? Кроме того, существует ли какой-либо другой способ правильного сброса черт...? (предпочтительно работающий кросс-браузер/ОС)

Спасибо

4b9b3361

Ответ 1

Используйте эту нотацию, она будет работать во всех браузерах, поддерживающих setLineDash

ctx.setLineDash([]);

Ответ 2

Я столкнулся с подобным поведением, единственным способом сделать Safari reset в lineDash было использование context.restore().

Добавление

ctx.restore();

прежде чем рисовать ваши пунктирные линии будут работать.

Затем вы должны reset проделать другие действия, например lineWidth.