HTML5 之Canvas绘制太阳系
<!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绘制太阳系的更多相关文章
- canvas绘制太阳系
原文地址:http://jeffzhong.space/2017/10/26/solar/ 学习canvas有一段时间了,顺便写个小项目练手,该项目用到的知识点包括: ES6面向对象 基本的三角函数 ...
- html5的canvas绘制迷宫地图
canvas标签一直是html5的亮点,用它可以实现很多东西.我想用它来绘画像迷宫那样的地图.借助到的工具有瓦片地图编辑器tiled(点击跳转到下载链接). 如图:如果你想要画像这样的迷宫地图,如果不 ...
- 【HTML5】Canvas绘制基础
什么是 Canvas? HTML5 的 canvas 元素使用 JavaScript 在网页上绘制图像. 画布是一个矩形区域,您可以控制其每一像素. canvas 拥有多种绘制路径.矩形.圆形.字符以 ...
- HTML5 在canvas绘制一个矩形
笔者:本笃庆军 原文地址:http://blog.csdn.net/qingdujun/article/details/32930501 一.绘制矩形 canvas使用原点(0,0)在左上角的坐标系统 ...
- HTML5用canvas绘制五星红旗
在HTML5一览中,我们提到html 5被冠以很多高帽,其中最高的一顶.备受争议的就是"Flash杀手".IT评论界老喜欢用这个词了,杀手无处不在.不管是不是杀手,HTML 5引进 ...
- html5的canvas绘制线条,moveTo和lineTo详解
今天在看html5,里面新增的属性有一个canvas,它相当于一个画布你可以用js在里面画你想要的效果!我在w3c的手册里面看到用moveTo和lineTo绘制线条讲的不是很清楚,尤其是moveTo和 ...
- HTML5 之Canvas 绘制时钟 Demo
<!DOCTYPE html> <html> <head> <title>Canvas 之 时钟 Demo</title> <!--简 ...
- html5、canvas绘制本地时钟
效果图: 代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...
- HTML5学习总结——canvas绘制象棋(canvas绘图)
一.HTML5学习总结——canvas绘制象棋 1.第一次:canvas绘制象棋(笨方法)示例代码: <!DOCTYPE html> <html> <head> & ...
随机推荐
- Linux 下进程的内存空间分配
这里主要是以 C 语言为例,其他语言开发的程序,每个进程都会有一个类似的空间.下面是一段 C 代码: #include <stdlib.h> #include <stdio.h> ...
- iOS 关于本地持久化存储的探讨
目前,用以本地化存储的方式有很多,常用的有以下: 1.临时缓存 先说说临时缓存,临时缓存一般相当于用来管理应用程序中全局需要常用的一些内容.比如当前用户的ID或者当前的定位信息等. 常用的方式就是写一 ...
- C#调用Windows API函数截图
界面如下: 下面放了一个PictureBox 首先是声明函数: //这里是调用 Windows API函数来进行截图 //首先导入库文件 [System.Runtime.InteropServices ...
- glade2支持C++代码的输出(2)
今天更新了一个BaseObject的代码:BaseObject.002.zip 同时将glade2生成C++代码的代码进行了调整,基于2.12.2的补丁为:cpp_out_2.patch.tar.xz ...
- sql 分页的两种写法
string Strsql = string.Format(@"select ee.DOCUMENTNO,ee.APPLICANTNAME,ee.COMPANY,ee.REQUESTTIME ...
- 理解Linux系统/etc/init.d目录和/etc/rc.local脚本
一.关于/etc/init.d 如果你使用过Linux系统,那么你一定听说过init.d目录.这个目录到底是干嘛的呢?它归根结底只做了一件事情,但这件事情非同小可,是为整个系统做的,因此它非常重 ...
- C#验证子网掩码的正确性
1. IP合法关于IP地址的合法性验证很简单,方法也很多,比如字符串分解.正则表达式等. 2. 子网掩码是否合法简单来讲,子网掩码就类似这样一串数字,前面一段是连续的1, 类似 ...
- JavaWeb学习笔记——javabean与表单
- 移动端图片上传解决方案localResizeIMG先压缩后ajax无刷新上传
现在科技太发达,移动设备像素越来越高,随便一张照片2M+,但是要做移动端图片上传和pc上略有不同,移动端你不能去限制图片大小,让用户先处理图片再上传,这样不现实.所以理解的解决方案就是在上传先进行图片 ...
- python中的not具体使用及意思
python中的not具体使用及意思 name='' while not name: name=raw_input(u'请输入姓名:') print name python中的not具体表示是什么: ...