我试图用HTML和canvas(我想学习简单的算法与我的学生,我想做出简单的指示)在HTML 5中的徽标龟。绘制动画线
我成功地做了基本的说明,但这些线条都是同时出现的,我想看到它们一个接一个出现。
这里是我的代码:
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:我不会说英语很好,我的道歉...
与你的主要问题没有关系,但考虑做'角度=(角度+ 360 - 角度旋转)%360'以确保你的角度保持积极 – Alnitak
我认为你很难在这里得到有用的答案,因为你需要的是相对困难的。您的乌龟说明,而不是立即执行操作,需要将预期的操作添加到要做的事情的_queue_中。在每一帧(即使用'window.requestAnimationFrame'),你都需要检查队列和当前动作的进度,并相应地采取行动。 – Alnitak