У меня проблема с рисованием на холсте в цикле.
Чего я хочу добиться, так это того, чтобы в каждом цикле скрипт ожидал несколько миллисекунд, а затем рисовал на холсте, который пользователь может увидетьизменение, а затем цикл повторяется.
Вместо этого пользователь не может видеть изменения, пока не закончится цикл for.
Но я обнаружил, что если япокажите окно с предупреждением, и скрипт ожидает ответа пользователя, он фактически рисует изменение.
Как показать "небольшие изменения" в каждом цикле, а не только в конце?
Мой код ( также здесь: http://janiczek.github.com/heighway-dragon/ ссылка теперь содержит что-то еще):
<script type="text/javascript">
function sleep (ms)
{
var start = new Date().getTime();
while (new Date().getTime() < start + ms)
continue;
};
function draw (withalert)
{
if (withalert == null) withalert = false;
var cur_x = 100 - .5;
var cur_y = 200 - .5;
length = 3;
steps = 20;
c.strokeStyle = "#f00";
canvas.width = canvas.width;
for (var count = 0; count < steps; count++)
{
sleep(100);
c.beginPath();
c.moveTo(cur_x, cur_y);
cur_x += length;
c.lineTo(cur_x, cur_y);
c.stroke();
if (withalert) alert(count);
}
};
</script>
<canvas id=canvas width=300 height=300 style="border: 2px solid #000"></canvas><br>
<input type="submit" value="Without alert" onclick="draw()">
<input type="submit" value="With alert" onclick="draw(true)">
<script type="text/javascript">
var canvas = document.getElementById("canvas");
var c = canvas.getContext("2d");
</script>