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
函数的。所以我这样定义它,以防用户不知道原型。