Javascript 在画布中绘制一个球作为对象

Javascript 在画布中绘制一个球作为对象,javascript,function,oop,object,canvas,Javascript,Function,Oop,Object,Canvas,我已经声明了下一个正方形,这很简单,但是现在我想对一个圆做同样的事情 我怎么能做到?多谢各位 //Create Var var squa = new Square(320, 380, 50, 50); //Define the square function Square(x, y, width, height) { "use strict"; this.x = (x === null) ? 0 : x; this.y = (y === null) ? 0 : y;

我已经声明了下一个正方形,这很简单,但是现在我想对一个圆做同样的事情

我怎么能做到?多谢各位

//Create Var
var squa = new Square(320, 380, 50, 50);

//Define the square
function Square(x, y, width, height) {
    "use strict";
    this.x = (x === null) ? 0 : x;
    this.y = (y === null) ? 0 : y;
    this.width = (width === null) ? 0 : width;
    this.height = (height === null) ? this.width : height;
}

//Draw the square as object
squa.fill(ctx);

你可以用你为
正方形所做的同样方法来做这件事。唯一真正的区别是使用
弧(x,y,r,startAngle,endAngle)
方法。用它画一个圆,你将
startAngle
endAngle
定义为0和2pi。像这样:
弧(x,y,r,0,Math.PI*2)
。要绘制圆,首先需要调用
ctx.beginPath()表示要绘制一些路径或圆弧。例如,这将在
(100100)
处绘制一个半径为10的圆:

ctx.beginPath();
ctx.arc(100, 100, 10, 0, Math.PI*2);
ctx.fill(); // fill() is to fill in the circle, stroke() is for a empty circle.
因此,使用与上面使用的相同的编码风格,下面是如何创建一个
圆圈
。正如你所看到的,这几乎是以同样的方式完成的。下面是一个片段:
var ctx=document.getElementById(“canvas”).getContext(“2d”);
//创建变量
var circ=新的圆圈(100,100,20);
//定义圆
函数圆(x,y,r){
“严格使用”;
这个.x=(x==null)?0:x;
this.y=(y==null)?0:y;
this.r=(r==null)?0:r;
this.fill=函数(ctx){
ctx.beginPath();
弧(this.x,this.y,this.r,0,Math.PI*2);
ctx.fill();
}
}
//将圆作为对象绘制
循环填充(ctx)
canvas{边框:1px纯黑;}

你可以像对待
方块一样来处理这个问题。唯一真正的区别是使用
弧(x,y,r,startAngle,endAngle)
方法。用它画一个圆,你将
startAngle
endAngle
定义为0和2pi。像这样:
弧(x,y,r,0,Math.PI*2)
。要绘制圆,首先需要调用
ctx.beginPath()表示要绘制一些路径或圆弧。例如,这将在
(100100)
处绘制一个半径为10的圆:

ctx.beginPath();
ctx.arc(100, 100, 10, 0, Math.PI*2);
ctx.fill(); // fill() is to fill in the circle, stroke() is for a empty circle.
因此,使用与上面使用的相同的编码风格,下面是如何创建一个
圆圈
。正如你所看到的,这几乎是以同样的方式完成的。下面是一个片段:
var ctx=document.getElementById(“canvas”).getContext(“2d”);
//创建变量
var circ=新的圆圈(100,100,20);
//定义圆
函数圆(x,y,r){
“严格使用”;
这个.x=(x==null)?0:x;
this.y=(y==null)?0:y;
this.r=(r==null)?0:r;
this.fill=函数(ctx){
ctx.beginPath();
弧(this.x,this.y,this.r,0,Math.PI*2);
ctx.fill();
}
}
//将圆作为对象绘制
循环填充(ctx)
canvas{边框:1px纯黑;}

使用圆弧可以创建一个简单的圆(x,y,半径,起始位置通常为零,结束位置通常为360度)

var canvas=document.getElementById('myCanvas');
var context=canvas.getContext('2d');
context.beginPath();
弧(50,50,10,0,Math.PI*2);
context.fillStyle='FFF000';
context.fill();
closePath()

使用圆弧可以创建一个简单的圆(x,y,半径,起始位置通常为零,结束位置通常为360度)

var canvas=document.getElementById('myCanvas');
var context=canvas.getContext('2d');
context.beginPath();
弧(50,50,10,0,Math.PI*2);
context.fillStyle='FFF000';
context.fill();
closePath()

为什么不做一个
函数圈(x,y,r){…}
?并使用
arc()
。你可以用同样的方法去做,因为我在工作,并且使用圆(x,y,w,h,r){…},但是现在使用圆(x,y,r)效果很好,谢谢!!为什么不做一个
函数圆(x,y,r){…}
?并使用
arc()
。你可以用同样的方法去做,因为我在工作,并且使用圆(x,y,w,h,r){…},但是现在使用圆(x,y,r)效果很好,谢谢+1以实现良好的代码重用。您可能想将.fill改为Circle.prototype,以便更好地重用代码。@请右转,我不确定OP是如何定义其
fill
函数的。所以我这样定义它,以防用户不知道原型。+1用于良好的代码重用。您可能想将.fill改为Circle.prototype,以便更好地重用代码。@请右转,我不确定OP是如何定义其
fill
函数的。所以我这样定义它,以防用户不知道原型。