返回
Canvas 实战指南:创造动感世界里的多彩小球
前端
2023-12-20 19:03:02
Canvas 实战指南:创造动感世界里的多彩小球
在充满创意和技术的时代,Canvas 作为 HTML5 的重要组件,为我们提供了更多灵活性和表现力。
现在,我们准备共同踏上 Canvas 实战之旅,学习如何利用 Canvas 绘制一个动态小球,并赋予它生命和互动性。
第一步:新建画布
一开始,我们的 Canvas 是空白的。为了让它成为我们创作的舞台,我们首先要设置 Canvas 的宽高,并找到渲染上下文。
const canvas = document.getElementById('canvas');
const ctx = canvas.getContext('2d');
Canvas 作为容器,ctx 作为画笔,它们将共同帮助我们绘制和动画小球。
第二步:绘制边框
我们已经可以看到 Canvas 了,是不是迫不及待想看到小球在上面动起来?
我们先绘制一个边框,让 Canvas 更加清晰可见。
ctx.strokeStyle = 'black';
ctx.strokeRect(0, 0, canvas.width, canvas.height);
第三步:绘制小球
现在,小球登场啦!我们利用 Canvas 的 path() 和 fill() 方法,配合精心挑选的颜色,让小球鲜活起来。
ctx.beginPath();
ctx.arc(canvas.width / 2, canvas.height / 2, 50, 0, 2 * Math.PI);
ctx.fillStyle = 'red';
ctx.fill();
第四步:赋予小球生命
我们的小球已经有了雏形,但还缺少灵动性。
为了赋予小球生命,我们利用 setInterval() 函数,让小球每隔一段时间移动一小步,并且改变颜色,让它更具活力。
setInterval(() => {
ctx.clearRect(0, 0, canvas.width, canvas.height); // 清除之前的画面
ctx.beginPath();
ctx.arc(x, y, 50, 0, 2 * Math.PI);
ctx.fillStyle = `rgb(${Math.random() * 255}, ${Math.random() * 255}, ${Math.random() * 255})`;
ctx.fill();
x += dx; // 小球在x轴移动的距离
y += dy; // 小球在y轴移动的距离
// 边界检测,让小球在Canvas中反弹
if (x + dx > canvas.width || x + dx < 0) {
dx = -dx;
}
if (y + dy > canvas.height || y + dy < 0) {
dy = -dy;
}
}, 10); // 每10毫秒移动一次
第五步:让小球互动起来
现在,我们的小球已经活灵活现了,但它还不够调皮。
为了让小球与用户互动,我们可以添加鼠标移动事件,当用户移动鼠标时,小球会随之改变移动方向,就像一个调皮的孩子在玩耍。
canvas.addEventListener('mousemove', (event) => {
dx = event.clientX - (canvas.width / 2);
dy = event.clientY - (canvas.height / 2);
});
结语
恭喜你!你已经完成了 Canvas 实战挑战,创造了一个动感世界里的多彩小球。
现在,你可以自由发挥你的想象力,改变小球的形状、颜色和移动方式,甚至尝试添加更多的小球,创造一个属于你自己的奇幻世界。
Canvas 的世界里,可能性是无限的。尽情探索、创造、玩耍吧!