一:创建画布

<canvas width="1000" height="1000" id="solar" style="background: #000000"></canvas>

二:实现功能

var solar = document.getElementById('solar');
var cxt = solar.getContext('2d');

// 轨道
function drawTrack(){
for(var i=0; i<8; i++){
cxt.beginPath();
cxt.arc(500, 500, (i+1)*50, 0, 360, false);
cxt.closePath();
cxt.strokeStyle = 'white';
cxt.stroke();
}
}

drawTrack();

function drawStar(x, y, radius, cycle, sColor, eColor) {
this.x = x;
this.y = y;
this.radius = radius;
this.cycle = cycle;
this.sColor = sColor;
this.eColor = eColor;
this.color = null;
this.time =0;
this.draw = function(){
cxt.save();
cxt.translate(500, 500);
cxt.rotate(this.time*(360/this.cycle)*Math.PI/180);
cxt.beginPath();
cxt.arc(this.x, this.y, this.radius, 0, 360, false);
cxt.closePath();
this.color = cxt.createRadialGradient(this.x, this.y, 0, this.x, this.y, this.radius);
this.color.addColorStop(0, this.sColor);
this.color.addColorStop(1, this.eColor);
cxt.fillStyle = this.color;
cxt.fill();
cxt.restore();

this.time += 1;
}
}

function Sun(){
drawStar.call(this, 0, 0, 20, 0, '#f00', '#f90');
}

function Mercury(){
drawStar.call(this, 0, -50, 10, 87.70, '#a69697', '#5c3e40');
}

function Venus(){
drawStar.call(this, 0, -100, 10, 224.701, '#c4bbac', '#1f1315');
}

function Earth(){
drawStar.call(this, 0, -150, 10, 365.224, '#78b1e8', '#050c12');
}

function Mars(){
drawStar.call(this, 0, -200, 10, 686.98, '#cec9b6', '#76422d');
}

function Jupiter(){
drawStar.call(this, 0, -250, 10, 4332.589, '#c0a48e', '#322222');
}

function Saturn(){
drawStar.call(this, 0, -300, 10, 10759.5, '#f7f9e3', '#5c4533');
}

function Uranus(){
drawStar.call(this, 0, -350, 10, 30799.095, '#a7e1e5', '#19243a');
}

function Neptune(){
drawStar.call(this, 0, -400, 10, 60152, '#0661b2', '#1e3b73');
}
var sun = new Sun();

var mercury = new Mercury();

var venus = new Venus();

var earth = new Earth();

var mars = new Mars();

var jupiter = new Jupiter();

var saturn = new Saturn();

var uranus = new Uranus();

var neptune = new Neptune();

function move(){
cxt.clearRect(0, 0, 1000, 1000);
drawTrack();
sun.draw();
mercury.draw();
venus.draw();
earth.draw();
mars.draw();
jupiter.draw();
saturn.draw();
uranus.draw();
neptune.draw();
}

setInterval(move, 20);

canvas 实现太阳系效果的更多相关文章

  1. canvas之太阳系效果

    星球 变量名 公转周期 光色 暗色 水星 Mercury 87.70 #a69697 #5c3e40 金星 Venus 224.701.70 #c4bbac #1f1315 地球 Earth 365. ...

  2. canvas绘制太阳系

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

  3. 使用Canvas实现动画效果 | DKlogs -- 设计 | 生活

    使用Canvas实现动画效果 | DKlogs -- 设计 | 生活 使用Canvas实现动画效果

  4. canvas实现倒计时效果示例(vue组件内编写)

    前言: 此事例是在vue组件中,使用canvas实现倒计时动画的效果.其实,实现效果的逻辑跟vue没有关系,只要读懂canvas如何实现效果的这部分逻辑就可以了 canvas动画的原理:利用定时器,给 ...

  5. 原生js实现canvas气泡冒泡效果

    说明: 本文章主要分为ES5和ES6两个版本 ES5版本是早期版本,后面用ES6重写优化的,建议使用ES6版本. 1, 原生js实现canvas气泡冒泡效果的插件,api丰富,使用简单2, 只需引入J ...

  6. canvas/CSS仪表盘效果

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  7. canvas弹动效果

    弹动效果,用物体与目标的距离乘上系数再累加至速度上,让物体呈加速度运动,再让速度乘与摩擦力系数,让物体最终停止运动 代码如下所示 var canvas = document.getElementByI ...

  8. 用Canvas制作剪纸效果

    在做剪纸效果之前,先介绍剪纸效果运用到的一些知识: 1.阴影: 在Canvas之中进行绘制时,可以通过修改绘图环境中的如下4个属性值来指定阴影效果: shadowColor:CSS格式的颜色字串.默认 ...

  9. HTML5之Canvas时钟(网页效果--每日一更)

    今天,带来的是使用HTML5中Canvas标签实现的动态时钟效果. 话不多说,先看效果:亲,请点击这里 众所周知,Canvas标签是HTML5中的灵魂,HTML5 Canvas是屏幕上的一个由Java ...

随机推荐

  1. windows(cr lf )转unix (lf)

  2. feign的hystrix不起作用.

    在springCloud中使用feign内嵌的断路器hystrix时.feign中的hystrix不起作用.这可能是由于springCloud的版本原因造成的.需要在application.prope ...

  3. inception+archery SQL审核平台

    关闭防火墙和selinux 宿主机安装mysql,创建archery数据库,并给所有权限,允许远程连接到该数据库 grant all privileges on *.* to 'root'@'%' i ...

  4. centos7.2 增加3T的XFS模式分区

    parted -l 查看分区情况与要分区的设备 # parted /dev/sda                   #选定要操作的硬盘     此时命令提示符会变成(parted)    (par ...

  5. tf.layers.dense()

    tf.layers.dense用法 2018年05月30日 19:09:58 o0haidee0o 阅读数:20426   dense:全连接层 相当于添加一个层,即初学的add_layer()函数 ...

  6. 如何彻底卸载mysql(xp)

    如何彻底卸载mysql 完整的卸载MySQL 5.x 的方法: 1.控制面板里的增加删除程序内进行删除 2.删除MySQL的安装文件夹C:\Program Files\MySQL,如果备份好,可以直接 ...

  7. rear

    rear - 必应词典 美[rɪr]英[rɪə(r)] v.抚养:养育:饲养:培养 n.屁股:后部:臀部 adj.后面的:后部的 网络背面:后方:后轮 变形过去分词:reared:现在分词:reari ...

  8. android.support.v4与Android.support.v7

    Android提供了android.support.v4和android.support.v7两个库,以便低版本API可以使用高版本API的功能. Fragment(碎片)类,是在Android 3. ...

  9. TCP/IP中的四元组、五元组、七元组

    四元组:源IP地址.目的IP地址.源端口.目的端口 五元组:源IP地址.目的IP地址.源端口.目的端口.传输层协议 七元组:源IP地址.目的IP地址.源端口.目的端口.传输层协议,服务类型以及接口索引

  10. sql语句Order by 报错列名不明确

    select top 10 column1,column2,column3 from table1 where table1.id not in(select top 0 table1.id from ...