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> & ...
随机推荐
- 重新认识unicode和utf8编码
重新认识unicode和utf8编码 直到今天,准确的说是刚才,我才知道UTF-8编码和Unicode编码是不一样的,是有区别的囧 他们之间是有一定的联系的,看看他们的区别: UTF-8的长度是不一定 ...
- centos+nginx从零开始配置负载均衡
nginx负载均衡的理解 nginx是一个轻量级的.高性能的webserver,他主要可以干下面两件事: 作为http服务器(和apache的效果一样) 作为反向代理服务器实现负载均衡 现在nginx ...
- CentOS7安装mongoDB数据库
CentOS7安装mongoDB数据库 时间:2015-03-03 16:45来源:blog.csdn.net 作者:进击的木偶 举报 点击:8795次 mongoDB是目前发展比较好的NOSQL数据 ...
- [转]如何启用Ubuntu的休眠模式
大家都知道 Windows 有休眠模式,其实 Ubuntu 也有.休眠模式简单来说,就是可以在用户暂时离开时将内存中的所有内容都写入到硬盘当中,当用户下次开机时,就可以直接启动到上次保存的时间状态. ...
- CSS3系列四(Media Queries移动设备样式)
viewport设置适应移动设备屏幕大小 viewport:允许开发者创建一个虚拟窗口并自定义其窗口的大小或缩放功能 <meta name="viewport" conten ...
- HD1814Peaceful Commission(模板题)
题目链接 题意: 和平委员会 根据宪法,Byteland民主共和国的公众和平委员会应该在国会中通过立法程序来创立. 不幸的是,由于某些党派代表之间的不和睦而使得这件事存在障碍. 此委员会必须满足下列条 ...
- 深入理解JavaScript中创建对象模式的演变(原型)
深入理解JavaScript中创建对象模式的演变(原型) 创建对象的模式多种多样,但是各种模式又有怎样的利弊呢?有没有一种最为完美的模式呢?下面我将就以下几个方面来分析创建对象的几种模式: Objec ...
- Interface/接口
1. 类和结构能够实现接口 2. 接口声明包含如下四种类型:属性.方法.事件和索引:这些函数声明不能包含任何实现代码,而在每一个成员的主体后必须使用分号 3. 继承接口的类或结构必须实现接口中的所有成 ...
- 访问cv::Mat中的数据时遇到的指针类型问题
在用Opencv的时候由于下图原本的图像尺寸是1111*1111,要进行resize,代码如下: cv::Mat img = cv::imread("//Users//apple//td3/ ...
- IBatis插入类的实例
<insert id="insOrderDetail" parameterClass="OrderDetail"> INSERT INTO Orde ...