< ! doctype html >
< html >
< head > < / head >
< body >
< canvas id="canvas" width="1000" height="1000" style="background:#000" >
不支持呀,不支持.
< / canvas >
< script >
var cxt=document.getElementByIdx_x("canvas").getContext("2d");
//画轨道
function drawPathWay(){
for(var i=0;i<8;i++){
cxt.beginPath();
cxt.lineWidth=1;
cxt.strokeStyle="white";
cxt.arc(500,500,50*(i+1),0,360,false);
cxt.stroke();
cxt.closePath();
}
}
drawPathWay();
//画球的通用方法
function draw(x,y,r,v,bcolor,ecolor){
this.x=x;
this.y=y;
this.r=r;
this.v=v;
this.bcolor=bcolor;
this.ecolor=ecolor;
//
this.color=null;
this.time=0;
this.draw=function(){
cxt.save();
cxt.translate(500,500);
cxt.rotate(this.time*(360/this.v)*Math.PI/180);
cxt.beginPath();
cxt.arc(this.x,this.y,this.r,0,360,false);
cxt.closePath();
this.color=cxt.createRadialGradient(this.x,this.y,0,this.x,this.y,this.r);
this.color.addColorStop(0,bcolor);
this.color.addColorStop(1,ecolor);
cxt.fillStyle=this.color;
cxt.fill();
cxt.restore();
this.time+=1;
}
}
//构造各个球体
function Sun(){
draw.call(this,0,0,20,0,"#F00","#f90");
}
function Mercury(){
draw.call(this,0,-50,10,87.70,"#A69697","#5C3E40");
}
function Venus(){
draw.call(this,0,-100,10,224.701,"#C4BBAC","#1F1315");
}
function Earth(){
draw.call(this,0,-150,10,365.224,"#78B1E8","#050C12");
}
function Mars(){
draw.call(this,0,-200,10,686.98,"#CEC9B6","#76422D");
}
function Jupiter(){
draw.call(this,0,-250,10,4332.589,"#C0A48E","#322222");
}
function Saturn(){
draw.call(this,0,-300,10,10759.5,"#F7F9E3","#5C4533");
}
function Uranus(){
draw.call(this,0,-350,10,30799.095,"#A7E1E5","#19243A");
}
function Neptune(){
draw.call(this,0,-400,10,60152,"#0661B2","#1E3B73");
}
//创建各个球体
var sun=new Sun();
var water=new Mercury();
var gold=new Venus();
var diqiu=new Earth();
var fire=new Mars();
var wood=new Jupiter();
var soil=new Saturn();
var god=new Uranus();
var sea=new Neptune();
//画全图
function sunWord(){
cxt.clearRect(0,0,1000,1000);
drawPathWay();
sun.draw();
water.draw();
gold.draw();
diqiu.draw();
fire.draw();
wood.draw();
soil.draw();
god.draw();
sea.draw();
}
sunWord();
//动
setInterval(sunWord,10);
< / script >
< / body >
< / html >
因为有类似的操作,所以可以考虑写活代码,本来准备画死的的,至于这个,最不怎么理解的就是那个球构造。
把他想成JAVA里的对象,就好理解一点了,相当于是创建一个球类,传的参数是类的属性,里面有个方法,就是画圆,画的时候要把需要的属性都准备好。在外面就可以创建对象后调用方法。
而 function Sun(){
draw.call(this,0,0,20,0,"#F00","#f90");
}这个,就是这个方法调用自己,this把自己放进去。和java还是有区别的,但是不结合我就没发理解了。。。希望以后能越来越顺利哈。