Вы можете использовать setTimeOut
или setInterval
в Javascript.Эти функции не приостанавливают выполнение, но устанавливают функцию обратного вызова, которая будет вызываться после заданной задержки, а синтаксис будет таким, как указано ниже
setTimeout(function-identifier, delay, params);
например:
function doit(param1, param2){
}
setTimeout(doit, 500, 20, 20);
В вашем случае это должно быть
setTimeout(this.drawLine, 100, x, y);
, и вы должны также передать this
, чтобы оно стало
setTimeout(this.drawLine, 100, this, x, y);
....
....
this.drawLine = function(_this, x, y) {
_this.ctx.lineTo(x, y);
_this.ctx.stroke();
console.log("draw line " + x + "/" + y);
};
И в вашей функции вы вызываете setTimeout
внутри циклакоторый не будет иметь никакого значения во времени между построением двух последовательных точек в массиве.Вместо этого он отображает все точки после заданной задержки.Таким образом, вы должны добавить задержку там.Таким образом, я исправил вашу версию кода.
посмотрите: http://jsfiddle.net/diode/pQ4Qg/9/
Но правильный способ сделать это - создать двумерный массив точек и использовать две функции:поменять путь и прочее, чтобы нарисовать каждый путь.
демо здесь: http://jsfiddle.net/diode/pQ4Qg/11/
Вы можете настроить это, чтобы добиться того, что вам нужно.