【发布时间】:2021-07-24 20:20:47
【问题描述】:
我想画很多点。我就是这样做的:
let canvas = document.getElementById('canvas');
let ctx = canvas.getContext('2d');
function render () {
window.requestAnimationFrame(render);
// clear screen
ctx.clearRect(0, 0, cwidth, cheight);
for (let p of particles) {
p.rmove();
p.render(ctx);
}
}
render();
我点的绘图函数如下所示:
class Point {
x: number;
y: number;
constructor(x, y) {
this.x = x;
this.y = y;
}
rmove() {
this.x += Math.round(Math.random() < 0.5 ? -1 : 1);
this.y += Math.round(Math.random() < 0.5 ? -1 : 1);
}
render (ctx) {
ctx.fillStyle = "gray";
ctx.beginPath();
ctx.rect(this.x, this.y, 1.5,1.5);
ctx.fill();
ctx.stroke();
}
}
请注意,我将 rmove() 函数中的值四舍五入,因为画布使用整数坐标绘制点的速度更快。
我想以某种方式将所有这些绘图调用放在一起。
【问题讨论】:
-
你能告诉我们更多关于代码示例的信息吗?在这种情况下真的合理吗?我希望从循环中取出一段 beginpath 代码,但结果并不是那么简单。
标签: javascript typescript canvas