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;
java 九大行星运行_html5 canvas太阳系九大行星运行动态图代码相关推荐
- java 怎么清除画布_HTML5 Canvas 清除画布
HTML5 Canvas 清除画布 HTML5 Canvas clearRect()的使用方法,2D上下文功能clearRect()用于清除画布的矩形.清除的矩形变为透明. 在线示例 2D上下文功能c ...
- java做橡皮擦效果_HTML5 canvas橡皮擦擦拭效果
这是一款HTML5 canvas橡皮擦擦拭效果.该效果通过canvas来制作遮罩层和擦拭用的橡皮擦,用户可以通过移动鼠标来移除遮罩层,效果非常炫酷. 因为发代码有时会排版混乱,所以先发图演示了.源码已 ...
- java如何实现多个小球碰撞后反弹以及绘制动态图。
本次小实验,通过三个类的编写来实现. 首先创建一个点类,其中包含对点的构造方法和多个需要点的构造方法. /*** 点类,表示平面中的点或始点为原点的向量* @author xxx**/ public ...
- java png生成webp图片_PNG转WEBP格式的动态图
最近接手的项目上需要替换以前的UI资源,其中有部分动态图使用的是freso+webp进行显示,然而设计给的只有一帧帧的PNG格式,本来想随便转个GIF弄上去,结果透明背景的PNG转成GIF很容易出现白 ...
- HTML+CSS绘制太阳系九大行星运行轨迹
HTML+CSS绘制太阳系九大行星运行轨迹 最近正在菜鸟教程学习前端的相关知识,学习过程中发现这个项目比较有趣且知识涵盖比较多,所以就写篇博客记录一下,方便以后查看.这是我第一次写技术博客,如遇有缘人 ...
- MATLAB 太阳系九大行星运行(天文物理)天体仿真(一)
MATLAB 太阳系九大行星运行仿真,代码如下(没有依据实际的速度,大小,和相对位置,请自行搜集资料和调整):(代码有问题请留言,代码来源百度知道并稍加修改) CODE BEGIN: clear;cl ...
- 【零基础学Java】—List集合(三十九)
[零基础学Java]-List集合(三十九) java.util.list接口 extends Collection接口 list接口的特点: 1.有序的集合,存储元素和取出元素的顺序是一致的(存储1 ...
- 【零基础学Java】—成员变量和局部变量(九)
[零基础学Java]-成员变量和局部变量(九)
- 【genius_platform软件平台开发】第七十九讲:Linux系统中可执行程序后台运行的几种方式
[genius_platform软件平台开发]第七十九讲:Linux系统中可执行程序后台运行的几种方式 1. 问题描述 2. & 符号 3. nohup指令 4. ctrl + z.jobs. ...
最新文章
- oracle 关闭audit,关于Oracle审计(audit)
- 关于ewebeditor行距
- 【Laravel-海贼王系列】第七章,Pipeline 类解析
- Hadoop-2.4.1学习之edits和fsimage查看器
- _Linux进程信号详解
- 第三届全国高校“数据科学与大数据技术”教学研讨会
- 读《高性能网站建设指南》有感
- 文件下载时,IE与FireFox对文件名编码的不同处理! Content-Disposition
- Linux Tun/Tap网口(/dev/net/tun)的读写方法
- 黑马程序员提供得教程
- php时间戳转换成日期格式,PHP时间戳和日期格式相互转换
- 如何批量修改文件名称
- Chrome的YouTube双语字幕插件
- 当“程序猿”遇到“母亲节”,看他们是如何送上特殊的祝福
- 重返设计模式--命令模式
- Kata Container 2.x 和 3.0 安装,内核编译,镜像制作
- yarn打包报错:error during build: Error: Assigning to rvalue (Note that you need plugins to import files
- 【信奥题库 NOIP 2020 在线模拟赛 T4】三元组
- Vue3 使用 store 给请求头配上 token
- 前端工程化 - 剖析npm的包管理机制