在其他 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 是弧行进到的百分比。这是一个小提琴,使它更容易看到。
我想做的仍然是使用画布,给每个弧线一个完整的背景圈。这是我想要实现的图像,(我在 Photoshop 中做了这个)
我不想使用图像,并将其放在圆弧下方,我已经在画布上使用背景图像进行了尝试,但我对对齐方式非常不满,对齐背景实际上是微像素不同的到动画弧。另外我想用画布来做。
任何人都可以帮我弄清楚如何做吗?我想它会将动画弧放在一个静态圆圈的顶部。
请帮忙,因为这让我发疯!