С некоторой помощью других участников Stack Overflow. Я создал раздел анимированного холста на веб-сайте, который я создаю.
Я новичок в Canvas, я хочу создать анимированную дугу/окружность.
function animate(elementId, endPercent) {
var canvas = document.getElementById(elementId);
var context = canvas.getContext('2d');
var x = canvas.width / 2;
var y = canvas.height / 2;
var radius = 43.5;
var curPerc = 0;
var counterClockwise = false;
var circ = Math.PI * 2;
var quart = Math.PI / 2;
context.lineWidth = 9;
context.strokeStyle = '#c51414';
context.lineCap = 'butt';
context.shadowOffsetX = 1;
context.shadowOffsetY = 1;
context.shadowBlur = 1;
context.shadowColor = "#c51414";
function render(current) {
context.clearRect(0, 0, canvas.width, canvas.height);
context.beginPath();
context.arc(x, y, radius, -(quart), ((circ) * current) - quart, false);
context.stroke();
curPerc++;
if (curPerc <= endPercent) {
requestAnimationFrame(function () {
render(curPerc / 100);
});
}
}
render();
}
animate('skill1', 90);
animate('skill2', 80);
animate('skill3', 45);
animate('skill4', 92);
animate('skill5', 80);
animate('skill6', 65);
Вот сценарий, который я использую в данный момент. Внизу используется
animate('skill3', 45);
45 в конце — это процент, на который проходит дуга. Вот скрипка, чтобы было легче видеть.
То, что я хочу сделать, это по-прежнему использовать холст, дать каждой дуге полный фоновый круг. Вот изображение того, чего я пытаюсь добиться (я сделал это в фотошопе)
Я не хочу использовать изображение и помещать его под дугу, я уже пробовал это с фоновым изображением на холсте, но я действительно озабочен выравниванием, и для выравнивания фона буквально используются микропиксели. к анимированной арке. Плюс я хочу сделать это с Canvas.
Может ли кто-нибудь помочь мне со скрипкой, как это сделать? Я предполагаю, что это будет наложение анимированной дуги поверх статического круга.
Пожалуйста, помогите, это сводит меня с ума!