只是练习使用带有参数的构造函数并遇到错误,我相信这些错误源自fillStyle方法。
我的画布只显示为空白,控制台上没有错误?
尝试构建5个不同的圆圈,每个圆圈都有自己特定的颜色。
我创造了一个小提琴:https://jsfiddle.net/kvuf7dxb/;
主要代码:
var circle1;
var circle2;
var circle3;
var circle4;
var circle5;
function drawCircles() {
ctx.clearRect(0,0,w,h);
circle1 = new Circle(600,600,102,55);
circle2 = new Circle(600,600,40,10);
circle3 = new Circle(600,600,37,12);
circle4 = new Circle(600,600,280,34);
circle5 = new Circle(600,600,390,55);
}
function Circle(x, y, color,r) {
this.x = x;
this.y = y;
this.color = color;
this.r = r;
this.show = function() {
ctx.beginPath();
ctx.moveTo(this.x,this.y);
ctx.fillStyle = this.color;
ctx.arc(this.x,this.y,this.r,0,Math.PI*2,true);
ctx.fill();
};
}
我知道所有圆圈都会出现在同一个x和y位置。
答案 0 :(得分:1)
有几个问题需要修复。这是一个有效的版本。
var canvas = document.getElementById('stars');
var ctx = canvas.getContext('2d');
var w = window.innerWidth;
var h = window.innerHeight;
canvas.width = w;
canvas.height = h;
var circle1 = new Circle(20, 20, '66CC00', 55),
circle2 = new Circle(30, 30, 'FF0000', 10),
circle3 = new Circle(40, 40, '3333FF', 12),
circle4 = new Circle(50, 50, 'FFFF00', 34),
circle5 = new Circle(70, 70, 'FF9933', 55);
drawCircles();
function drawCircles() {
ctx.clearRect(0, 0, w, h);
circle1.show();
circle2.show();
circle3.show();
circle4.show();
circle5.show();
requestAnimationFrame(drawCircles);
}
function Circle(x, y, color, r) {
this.x = w * x / 100;
this.y = h * y / 100;
this.color = '#' + color;
this.r = r;
this.show = function() {
ctx.beginPath();
ctx.fillStyle = this.color;
ctx.arc(this.x, this.y, this.r, 0, Math.PI * 2);
ctx.fill();
};
}

body {
background: black;
overflow: hidden;
}

<canvas id="stars"></canvas>
&#13;