Я пытаюсь сделать логотип Turtle в HTML 5 с помощью javascript и canvas (я хочу изучать простые алгоритмы с моими учениками, и я хочу сделать простые инструкции).Рисование анимированных строк
Я успешно выполнил основные инструкции, но линии появляются одновременно, и я хочу, чтобы они отображались один за другим.
Вот мой код:
var dessin = document.getElementById("dessin")
var ctx = dessin.getContext("2d");
var angle = 0; // angle en degrés
// on donne les coordonnées de départ
var x = dessin.width/2;
var y = dessin.height/2;
function forward(distance) {
var iter = 1;
var Angle = angle % 360;
var theta = Angle/180 * Math.PI;
var vitesse = 10;
var compteur = 1;
var timer = setInterval(function() {
ctx.beginPath();
ctx.moveTo(x, y);
x = Math.cos(theta) * distance/vitesse + x;
y = Math.sin(theta) * distance/vitesse + y;
ctx.lineTo(x, y);
ctx.stroke();
compteur++;
if (compteur > vitesse) {
clearInterval(timer);
}
}, 1000/vitesse);
//setTimeout(clearInterval(timer),2000);
}
function turn_left(angle_rotation) {
angle = (angle - angle_rotation) % 360;
}
//Firing commands
turn_left(45);
forward(100);
turn_left(45);
forward(100);
<canvas id="dessin" width="400" height="400"></canvas>
Я хочу иметь две линии (по диагонали один, и вертикальная), но у меня есть много его ...
Как я могу это сделать?
Спасибо! PS: Я не очень хорошо владею английским языком, мои извинения ...
не имеет отношения к вашему основному вопросу, но подумайте о том, чтобы сделать 'angle = (angle + 360 - angle_rotation)% 360', чтобы ваши углы оставались положительными – Alnitak
Я думаю, вы будете изо всех сил пытаться получить полезные ответы здесь, потому что то, что вам нужно, относительно сложно. В ваших инструкциях по черепахе, а не при немедленном выполнении действий, необходимо добавить предполагаемое действие к _queue_ вещей, которые нужно сделать. На каждом кадре (то есть с использованием 'window.requestAnimationFrame') вам нужно будет проверить очередь и ход текущего действия и действовать соответствующим образом. – Alnitak