Я хотел бы сделать анимацию одной строки с использованием тегов JavaScript и Canvas. Я могу сделать это без каких-либо проблем, кроме:JS/Canvas single line animation
он отлично работает, если вы пытаетесь сделать прямую линию - у меня есть интервал (10 мс), добавляющий 1px, поэтому, если он идет от 150px (x)/20px (Y) до 150px (X)/200px (Y) - все выглядит круто.
Проблема с линии будет вправо или влево - например, из 150px (х)/20px (Y) на 35px (X)/200px (Y)
Вот моя анимация терпит неудачу, потому что, добавляя 1px каждый 10мс и к X и Y делает линию хит левой стороны (35px) первым, а затем собирается оттуда моего конечной точкой Y.
Вот мой код (требуется Firefox или Opera) - как вы можете видеть линия ударяет левой стороной раньше, и это моя проблема. :(
<html>
<script type="text/javascript" src="http://www.prototypejs.org/assets/2008/9/29/prototype-1.6.0.3.js"></script>
<style>
body {background: #fff; color: #ccc;}
</style>
<script type="text/javascript">
var startpointx = 150;
var startpointy = 25;
var curposx = 150;
var curposy = 25;
var myinterval;
function init() {
myinterval = setInterval(' animate(35, 250) ', 10);
}
function random (n)
{
return (Math.floor (Math.random() * n));
}
function animate(endpointx, endpointy) {
if (curposx == endpointx && curposy == endpointy){
clearInterval(myinterval);
drawShape(endpointx, endpointy);
return false;
} else {
if(curposx != endpointx){
if(endpointx > curposx) {
curposx = curposx + 1;
} else {
curposx = curposx - 1;
}
}
if(curposy <= endpointy){
curposy = curposy + 1;
}
}
drawShape(curposx, curposy, "#000");
}
function drawShape(tendpointx, tendpointy, clor){
var canvas = document.getElementById('cnvs');
var ctx = canvas.getContext('2d');
ctx.clearRect(0,0,310,400);
ctx.strokeStyle = clor;
ctx.beginPath();
ctx.moveTo(startpointx ,startpointy);
ctx.lineTo(tendpointx,tendpointy);
ctx.stroke();
}
//
init();
</script>
<body>
<canvas id="cnvs" width="310" height="400" style="border: 1px solid #ccc;"></canvas>
</body>
</html>
Работали как очарование. Спасибо, сэр. :) –