<!DOCTYPE html>
<html>
<head>
<title>HTML5_Canvas_SolarSystem</title>
<!--简单 样式模版-->
<style type="text/css">
*
{
margin: 0;
padding: 0;
font-family: YaHei Consolas Hybrid,宋体;
font-size: 14px;
list-style: none;
}
.wrapper
{
margin: 50px auto;
width: 1000px;
padding: 10px;
border: solid 1px gray;
background-color: #eee;
overflow:auto;
}/*H1浅蓝阴刻字*/
body
{
background-color: gray;
}
h1
{
text-align: center;
display: block;
background-color: #C4DEF7;
color: #344251;
font: normal 30px "微软雅黑";
text-shadow: 1px 1px 0px #DEF3FF;
padding: 5px 0px;
margin:10px;
box-shadow: 0px 2px 6px #000;
border-radius:10px;
} #canvas { background-color:Black;}
</style>
</head>
<body>
<h1>
HTML5 之 Canvas Demo SolarSystem
</h1>
<div class="wrapper">
<canvas width="1000" height="1000" id="canvas"></canvas>
<script type="text/javascript">
var canvas = document.getElementById("canvas");
var ctx = canvas.getContext("2d"); //初始化画面,并保存当前环境
var initMap= function(){
ctx.clearRect(0, 0, ctx.canvas.width, ctx.canvas.height);
ctx.save();
ctx.translate(ctx.canvas.width / 2, ctx.canvas.height / 2);
} //画轨道
var drawTrack = function () {
for (var i = 0; i <= 8; i++) {
ctx.beginPath();
ctx.arc(0, 0, 60 * i, 0, 360, false);
ctx.closePath();
ctx.strokeStyle = "#fff";
ctx.stroke();
}
} //画星球的函数(圆心坐标,开始渐变色,结束渐变色,公转周期,开始天数)
var drawPlanets = function (x, y, radius, sColor, eColor, cycle) {
this.x = x;
this.y = y;
this.radius = radius;
this.sColor = sColor;
this.eColor = eColor;
this.cycle = cycle;
this.days = 0; this.Draw = function () {
var angle = this.days * (360 / cycle);
ctx.save();
ctx.rotate(angle * Math.PI / 180);
ctx.beginPath();
ctx.arc(this.x, this.y, this.radius, 0, 360, false);
ctx.closePath();
var planetStyle = ctx.createRadialGradient(this.x - 2, this.y, 0, this.x, this.y, this.radius);
planetStyle.addColorStop(0, this.sColor);
planetStyle.addColorStop(1, this.eColor);
ctx.fillStyle = planetStyle;
ctx.fill();
ctx.restore();
this.days++;
}
} //画太阳的类,继承drawPlanets
function Sun() {
drawPlanets.call(this, 0, 0, 20, "#F00", "#f90", 0);
}
//创建一个水星的对象构造方法
function Mercury() {
drawPlanets.call(this, 60, 0, 12, "#A69697", "#5C3E40", 87.70);
}
//创建一个金星的对象构造方法
function Venus() {
drawPlanets.call(this, 120, 0, 14, "#C4BBAC", "#1F1315", 224.701);
}
//创建一个地球的对象构造方法
function Earth() {
drawPlanets.call(this, 180, 0, 15, "#0FAFFC", "#005281", 365);
}
//创建一个火星的对象构造方法
function Mars() {
drawPlanets.call(this, 240, 0, 15, "#CEC9B6", "#76422D", 686.98);
}
//创建一个木星的对象构造方法
function Jupiter() {
drawPlanets.call(this,300, 0, 15, "#C0A48E", "#322222", 4332.589);
}
//创建一个土星的对象构造方法
function Saturn() {
drawPlanets.call(this,360, 0, 15, "#F7F9E3", "#5C4533", 10759.5);
}
//创建一个天王星的对象构造方法
function Uranus() {
drawPlanets.call(this,420, 0, 15, "#A7E1E5", "#19243A", 30799.095);
}
//创建一个海王星的对象构造方法
function Neptune() {
drawPlanets.call(this,480, 0, 15, "#0661B2", "#1E3B73", 60152);
} //实例化出星球的对象
var sun = new Sun();
var earth = new Earth();
var mercury = new Mercury();
var venus = new Venus();
var mars = new Mars();
var jupiter = new Jupiter();
var saturn = new Saturn();
var uranus = new Uranus();
var neptune = new Neptune(); var move = function () {
//初始化画布,并保存环境
initMap();
//绘制轨道
drawTrack();
//调用绘制星球的函数
sun.Draw();
earth.Draw();
venus.Draw();
mars.Draw();
jupiter.Draw();
saturn.Draw();
uranus.Draw();
mercury.Draw();
neptune.Draw();
//返回到开始保存的环境
ctx.restore(); }
move();
//启动定时器,开始绘制
window.setInterval(move, 80); </script>
</div>
</body>
</html>

效果图:

HTML5 之Canvas绘制太阳系的更多相关文章

  1. canvas绘制太阳系

    原文地址:http://jeffzhong.space/2017/10/26/solar/ 学习canvas有一段时间了,顺便写个小项目练手,该项目用到的知识点包括: ES6面向对象 基本的三角函数 ...

  2. html5的canvas绘制迷宫地图

    canvas标签一直是html5的亮点,用它可以实现很多东西.我想用它来绘画像迷宫那样的地图.借助到的工具有瓦片地图编辑器tiled(点击跳转到下载链接). 如图:如果你想要画像这样的迷宫地图,如果不 ...

  3. 【HTML5】Canvas绘制基础

    什么是 Canvas? HTML5 的 canvas 元素使用 JavaScript 在网页上绘制图像. 画布是一个矩形区域,您可以控制其每一像素. canvas 拥有多种绘制路径.矩形.圆形.字符以 ...

  4. HTML5 在canvas绘制一个矩形

    笔者:本笃庆军 原文地址:http://blog.csdn.net/qingdujun/article/details/32930501 一.绘制矩形 canvas使用原点(0,0)在左上角的坐标系统 ...

  5. HTML5用canvas绘制五星红旗

    在HTML5一览中,我们提到html 5被冠以很多高帽,其中最高的一顶.备受争议的就是"Flash杀手".IT评论界老喜欢用这个词了,杀手无处不在.不管是不是杀手,HTML 5引进 ...

  6. html5的canvas绘制线条,moveTo和lineTo详解

    今天在看html5,里面新增的属性有一个canvas,它相当于一个画布你可以用js在里面画你想要的效果!我在w3c的手册里面看到用moveTo和lineTo绘制线条讲的不是很清楚,尤其是moveTo和 ...

  7. HTML5 之Canvas 绘制时钟 Demo

    <!DOCTYPE html> <html> <head> <title>Canvas 之 时钟 Demo</title> <!--简 ...

  8. html5、canvas绘制本地时钟

    效果图: 代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...

  9. HTML5学习总结——canvas绘制象棋(canvas绘图)

    一.HTML5学习总结——canvas绘制象棋 1.第一次:canvas绘制象棋(笨方法)示例代码: <!DOCTYPE html> <html> <head> & ...

随机推荐

  1. matlab从txt文本导入数据作图

    Matlab上 fr = fopen('d:\Matlab\长期纪录2014-3-11.txt', 'r');data=fscanf(fr,'%f',[1,inf]);axis([0 90000 -8 ...

  2. 加州大学伯克利分校Stat2.3x Inference 统计推断学习笔记: Section 5 Window to a Wider World

    Stat2.3x Inference(统计推断)课程由加州大学伯克利分校(University of California, Berkeley)于2014年在edX平台讲授. PDF笔记下载(Acad ...

  3. ffmpeg]ffmpeg使用参数的中文说明

    基本选项: -formats 输出所有可用格式 -f fmt 指定格式(音频或视频格式) -i filename 指定输入文件名,在linux下当然也能指定:0.0(屏幕录制)或摄像头 -y 覆盖已有 ...

  4. 利用css3选择器及css3边框做出的特效(1)

    利用border-radius及box-shadow制作圆角表格 界面效果图如下: css样式如下所示: * { margin:; padding:; } body { padding: 40px 1 ...

  5. [USACO 2010 OPEN]SLIED

    传送门 这道题的题意描述简直有毒.题没看完一眼分层图,然后火速敲了个堆优化的dijkstra,然后就被样例教做人了QAQ 这里说的最坏的情况让我很迷茫?感觉很难判定到底什么是最坏的情况以及确定了最坏的 ...

  6. gettextize与glib-gettextize的使用

    gettextize在各种场合都可以使用,用于支持多语言开发 glib-gettextize运行后,会修改po/Makefile.in.in文件,导致后续都必须运行glib-gettextize ge ...

  7. javascript序列化

    JSON.stringify() JSON.parse() toJSON() var person={"cardId":"546651353435"}; con ...

  8. Module模式

    <script> var myModel=(function(){ var model={}; var privateVar="Hello World"; functi ...

  9. pyqt2_官网教程

    https://pythonspot.com/en/pyqt4/ Articles You can find a collection of PyQT articles below. Applicat ...

  10. nginx+php-fpm的socket配置小结

    关于socket的介绍本文不再赘述,生产环境中常用socket方式,本文简述其配置方式. #cd /app/local/php#切换到php安装目录下 #mkdir run #chmod 777 ./ ...