Как нарисовать анимированное солнце на Canvas?

Пользователь

от josie , в категории: Другие , год назад

Как нарисовать анимированное солнце на Canvas?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от lilla.herman , год назад

@josie 

Можно использовать следующий код:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
const canvas = document.querySelector('canvas');
const ctx = canvas.getContext('2d');

let sunX = canvas.width / 2;
let sunY = canvas.height / 2;
let sunRadius = 50;
let sunGradient = ctx.createRadialGradient(sunX, sunY, 0, sunX, sunY, sunRadius);
sunGradient.addColorStop(0, '#ffce00');
sunGradient.addColorStop(1, '#ff8a00');

function drawSun() {
  ctx.beginPath();
  ctx.arc(sunX, sunY, sunRadius, 0, 2 * Math.PI);
  ctx.fillStyle = sunGradient;
  ctx.fill();
}

let angle = 0;
function animateSun() {
  angle += 0.01;
  sunX = canvas.width / 2 + Math.cos(angle) * 200;
  sunY = canvas.height / 2 + Math.sin(angle) * 200;
  drawSun();
}

setInterval(animateSun, 10);


В данном коде мы создаем элемент canvas и контекст для рисования. Затем мы задаем начальные значения для координат и радиуса солнца, а также создаем градиент, который будет заполнять контур солнца.


В функции drawSun мы рисуем круг солнца с помощью метода arc и заполняем его градиентом.


Функция animateSun производит анимацию солнца, изменяя координаты солнца в зависимости от угла поворота. Угол увеличивается на каждом шаге анимации, и при достижении полного круга он сбрасывается к нулю.


Наконец, мы используем setInterval для вызова функции animateSun каждые 10 миллисекунд и создаем эффект анимации.

Пользователь

от caterina , 15 дней назад

@josie 

Для отображения анимированного солнца на Canvas можно использовать следующий код:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<!DOCTYPE html>
<html>
<head>
  <title>Анимированное солнце</title>
</head>
<body>
  <canvas id="canvas" width="400" height="400"></canvas>
  <script>
    const canvas = document.getElementById('canvas');
    const ctx = canvas.getContext('2d');

    let centerX = canvas.width / 2;
    let centerY = canvas.height / 2;
    let sunRadius = 50;
    let angle = 0;

    function drawSun() {
      ctx.beginPath();
      ctx.arc(centerX, centerY, sunRadius, 0, Math.PI * 2);
      ctx.fillStyle = '#ffd700'; // желтый цвет солнца
      ctx.fill();
    }

    function animateSun() {
      ctx.clearRect(0, 0, canvas.width, canvas.height);

      angle += 0.02;
      centerX = canvas.width / 2 + Math.cos(angle) * 150;
      centerY = canvas.height / 2 + Math.sin(angle) * 150;

      drawSun();

      requestAnimationFrame(animateSun);
    }

    animateSun();
  </script>
</body>
</html>


Этот код создает анимированное солнце на Canvas. Сначала мы задаем начальные параметры солнца, затем в функции drawSun рисуем круг солнца с желтым цветом. Функция animateSun очищает Canvas, обновляет координаты солнца в зависимости от угла и заново рисует солнце. Используя requestAnimationFrame, мы обновляем анимацию на каждом кадре.