Переход рисования линии холста Html5

Здесь у меня есть холст, который рисует линию на холсте... каждые 300 мс рисует линию, но это слишком сложно для глаз...

ССЫЛКА НА ДЕМО: http://jsbin.com/fabalo

КОД:

var test = [{"X":300,"Y":200}];
var set_time;
var m = 0;
var add_array = function(){
  ctx.clearRect ( 0 , 0 , canvas.width, canvas.height );
    if(m < pts.length){
       var q = pts[m].X;
       var e = pts[m].Y;
       console.log(test);
       test.push({"X":q,"Y":e});
       mimicSvg(test,1);

       m++;
       set_time = setTimeout(add_array,300);//it call itself again and again until m is more than the length of the array'
    }else{
       clearTimeout(set_time);
    }
};

set_time = setTimeout(add_array,300);

Есть ли способ заставить анимацию плавно работать? Как можно улучшить эту анимацию? Как сделать переход?


person dert detg    schedule 26.01.2015    source источник


Ответы (1)


В холсте такой возможности нет. Вам придется найти способ сделать функцию easing/transition/tween самостоятельно.

Во-первых, вам нужно выбрать более короткий интервал и выяснить, сколько «промежуточных» шагов будет там, а затем использовать их для перехода.

Думайте об этом как о создании временного массива x-шагов между каждыми двумя шагами вашего основного массива.

person Shomz    schedule 26.01.2015
comment
Хотя анимация обычно полезна для того, чтобы сделать анимацию менее дрожащей, в этом случае я не вижу способа применить ваш ответ, потому что каждый дополнительный сегмент линии вызывает радикальное (неинкрементное) изменение положения во всех предыдущих сегментах. Одна мысль: вместо того, чтобы сразу привязывать новый сегмент линии, как насчет интерполяции этого сегмента и постепенного увеличения сегмента на месте. Возможно, этот переход будет менее резким. Я слишком устал сегодня вечером, чтобы попробовать - может, ты попробуешь? - person markE; 26.01.2015
comment
Думаю, мы говорим об одном и том же — интерполяции между точкой А и точкой Б в Х-количестве шагов. - person Shomz; 26.01.2015