Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 14.07.2019, 10:23
Аватар для Black_Star
Профессор
Отправить личное сообщение для Black_Star Посмотреть профиль Найти все сообщения от Black_Star
 
Регистрация: 11.07.2016
Сообщений: 300

анимация растущей линии на Canvas
Подскажите, как реализовать эффект постепенно растущей линии на canvas. Вот простой пример на canvas
<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
        #cnvs {
            border: 1px solid #f00;
        }
    </style>
</head>
<body>

<canvas id="cnvs" width="300" height="210">
<script>
        var canvas = document.getElementById('cnvs');
        var ctx = canvas.getContext('2d');
        ctx.lineWidth = 4;
        ctx.moveTo(50, 50);
        ctx.lineTo(70, 80);
        ctx.lineTo(150, 10);
        ctx.lineTo(200, 100);
        ctx.lineTo(10, 150);
        ctx.closePath();
        ctx.stroke();
    </script>
</body>
</html>

Как сделать, что б в процессе анимации от точки к точке прорисовывался бы путь ?
Ответить с цитированием
  #2 (permalink)  
Старый 14.07.2019, 10:49
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Black_Star,
https://javascript.ru/forum/jquery/5...tml#post383459
Ответить с цитированием
  #3 (permalink)  
Старый 14.07.2019, 11:49
Аватар для Black_Star
Профессор
Отправить личное сообщение для Black_Star Посмотреть профиль Найти все сообщения от Black_Star
 
Регистрация: 11.07.2016
Сообщений: 300

рони,
спасибо. А можно, что-то попроще и что б можно было увидеть результат ?
Ответить с цитированием
  #4 (permalink)  
Старый 14.07.2019, 20:43
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

canvas анимация по массиву
Black_Star,
<!doctype html>
<html lang="en">
<head>
        <meta charset="UTF-8">
        <meta name="viewport"
                    content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>Document</title>
        <style>
                #cnvs {
                        border: 1px solid #f00;
                }
        </style>
</head>
<body>

<canvas id="cnvs" width="300" height="210"></canvas>
<script>
 let canvas = document.getElementById('cnvs');
 let ctx = canvas.getContext('2d');
 let lastTime = performance.now();
 let arr =[[70, 80],[150, 10],[200, 100],[10, 150],[50, 50]];
 let from =[50, 50];
 const animate = (pos) => new Promise(resolve => requestAnimationFrame
   (
     function loop() {
       let[x, y] = pos,[xt, yt] = from;
       let dt = -lastTime + (lastTime = performance.now());
       let a = 1 - Math.exp(-0.001 * 3 * dt);
       xt = (1 - a) * xt + a * x;
       yt = (1 - a) * yt + a * y;
       if (Math.abs(xt - x) > 0.01) {
         ctx.beginPath();
         ctx.moveTo(...from);
         from =[xt, yt];
         ctx.lineTo(...from);
         ctx.stroke();
         requestAnimationFrame(loop);
       }
       else resolve(pos)
     }
   )
 );

 ctx.lineWidth = 4;
 async function anim(arr) {
   for (let pos of arr) {
     from = await animate(pos);
   };
 }
 anim(arr);
</script>
</body>
</html>
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Анимация вертикальной линии напротив текста при сролле mrtdiesel Элементы интерфейса 5 04.06.2017 11:40
Canvas не рисует линии Dmitriy_14 Элементы интерфейса 12 25.09.2016 09:59
Удаление линии с Canvas vaddd Элементы интерфейса 2 25.02.2016 03:11
Анимация. Увеличение и уменьшение длины линии sVETLANA2694 jQuery 1 10.08.2015 00:32
canvas - нарисовать линии Valentinka_1 Общие вопросы Javascript 1 09.05.2013 21:51