1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > java 九大行星运行_html5 canvas太阳系九大行星运行动态图代码

java 九大行星运行_html5 canvas太阳系九大行星运行动态图代码

时间:2023-01-27 18:07:10

相关推荐

java 九大行星运行_html5 canvas太阳系九大行星运行动态图代码

特效描述:html5 canvas 太阳系 九大行星运行 动态图代码。html5 canvas这个动画加上了每个行星的名称,只要鼠标移入目标行星就会显示。

代码结构

1. HTML代码

你浏览器不支持

window.οnlοad=function(){

var oImg=new Image();

oImg.src="img.png";

oImg.offOn=false;

oImg.οnlοad=function(){

oImg.offOn=true;

};

/*行星数据存储*/

var planetData=[{

type:"mercury",

speed:100,

location:220,

r:100,

tw:222,

th:220,

sw:30,

sh:30,

num:100,

count:460,

fontShow:false

},{

type:"Venus",

speed:100,

location:440,

r:150,

tw:228,

th:228,

sw:36,

sh:36,

num:200,

count:560,

fontShow:false

},{

type:"earth",

r:220,

speed:100,

location:668,

tw:252,

th:252,

sw:40,

sh:40,

num:400,

count:760,

fontShow:false

},{

type:"Mars",

r:300,

speed:100,

location:920,

tw:275,

th:276,

sw:50,

sh:50,

num:500,

count:860,

fontShow:false

},{

type:"Jupiter",

r:380,

speed:100,

location:1654,

tw:480,

th:480,

sw:66,

sh:66,

num:600,

count:960,

fontShow:false

},{

type:"Saturn",

r:490,

speed:100,

location:2134,

tw:533,

th:376,

sw:70,

sh:55,

num:700,

count:1060,

fontShow:false

},{

type:"Uranus",

r:570,

speed:100,

location:1196,

tw:342,

th:458,

sw:46,

sh:55,

num:800,

count:1160,

fontShow:false

},{

type:"Neptune",

r:630,

speed:100,

location:0,

tw:220,

th:220,

sw:40,

sh:40,

num:900,

count:1260,

fontShow:false

}]

/*太阳字体显示变量*/

var sunShow=true;

/*画布开始*/

var oCas=document.getElementById("canvas");

var ctx=oCas.getContext("2d");

canvas.width=document.documentElement.clientWidth;

canvas.height=document.documentElement.clientWidth;

function draw(){

ctx.clearRect(0,0,canvas.width,canvas.height);

if(oImg.offOn){

/*太阳*/

ctx.drawImage(oImg,0,2510,750,750,(oCas.width-100)/2,(oCas.height-100)/2,100,100);

/*太阳字体显示*/

if(sunShow){

ctx.font="20px Arial";

ctx.fillStyle="#fff";

ctx.textAlign="center";

ctx.fillText("sun",oCas.width/2,oCas.height/2-50);

}

/*轨迹颜色*/

ctx.strokeStyle="rgba(0,153,255,.4)";

/*循环行星数据,绘制出行星*/

for(var i=0;i

planetData[i].num+=planetData[i].speed/planetData[i].r;

if(planetData[i].num>=planetData[i].count){

planetData[i].num=planetData[i].count-360;

}

ctx.beginPath();

ctx.arc(oCas.width/2,oCas.height/2,planetData[i].r,0,2*Math.PI);

ctx.stroke();

ctx.save();

ctx.translate(oCas.width/2,oCas.height/2);

ctx.rotate(planetData[i].num*Math.PI/180);

ctx.translate(planetData[i].r,0);

ctx.drawImage(oImg,0,planetData[i].location,planetData[i].tw,planetData[i].th,-planetData[i].sw/2,-planetData[i].sh/2,planetData[i].sw,planetData[i].sh);

ctx.beginPath();

ctx.fillStyle="rgba(0,0,0,.5)";

ctx.fillRect(0,-planetData[i].sh/2,planetData[i].sw/2,planetData[i].sh);

ctx.restore();

/*字体显示*/

if(planetData[i].fontShow){

var rx=oCas.width/2+planetData[i].r*Math.cos(planetData[i].num*Math.PI/180),

ry=oCas.height/2+planetData[i].r*Math.sin(planetData[i].num*Math.PI/180),

str=planetData[i].type,

sh=planetData[i].sh;

ctx.font="20px Arial";

ctx.fillStyle="#fff";

ctx.textAlign="center";

ctx.fillText(str,rx,ry-sh/2-10);

}

}

}

requestAnimationFrame(draw);

}

draw();

oCas.οnmοusemοve=function(ev){

ev=ev || window.event;

var x=ev.layerX || ev.offsetX;

var y=ev.layerY || ev.offsetY;

/*太阳字体显示*/

ctx.beginPath();

ctx.arc(oCas.width/2,oCas.height/2,50,0,2*Math.PI);

if(ctx.isPointInPath(x,y)){

for(var j=0;j

planetData[j].fontShow=false;

}

sunShow=true;

};

for(var i=0;i

/*八大行星字体显示判断*/

ctx.beginPath();

var rx=oCas.width/2+planetData[i].r*Math.cos(planetData[i].num*Math.PI/180),

ry=oCas.height/2+planetData[i].r*Math.sin(planetData[i].num*Math.PI/180),

str=planetData[i].type;

ctx.arc(rx,ry,planetData[i].sw/2,0,2*Math.PI);

if(ctx.isPointInPath(x,y)){

sunShow=false;

for(var j=0;j

planetData[j].fontShow=false;

}

switch(str){

case "mercury":

planetData[0].fontShow=true;

break;

case "Venus":

planetData[1].fontShow=true;

break;

case "earth":

planetData[2].fontShow=true;

break;

case "Mars":

planetData[3].fontShow=true;

break;

case "Jupiter":

planetData[4].fontShow=true;

break;

case "Saturn":

planetData[5].fontShow=true;

break;

case "Uranus":

planetData[6].fontShow=true;

break;

case "Neptune":

planetData[7].fontShow=true;

break;

}

}

}

}

}

var w = window;

requestAnimationFrame = w.requestAnimationFrame || w.webkitRequestAnimationFrame || w.msRequestAnimationFrame || w.mozRequestAnimationFrame;

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。