canvas教程

html5-canvas-太阳系二

字号+ 作者:H5之家 来源:H5之家 2017-03-27 09:02 我要评论( )

html5-canvas-太阳系2 主要应用技术: 1、canvas画线 2、canvas画圆 3、笔触修改和填充笔修改 4、制作渐变色 5、角度旋转 6、JS部分对象和方法(setInterval)

html5-canvas-太阳系2 主要应用技术: 1、canvas画线 2、canvas画圆 3、笔触修改和填充笔修改 4、制作渐变色 5、角度旋转 6、JS部分对象和方法(setInterval) 效果图; 代码; !DOCTYPE htmlhtmlhead lang=en meta charset=UTF-8 title/title/headbody canvas

html5-canvas-太阳系2

主要应用技术:

1、canvas画线

2、canvas画圆

3、笔触修改和填充笔修改

4、制作渐变色

5、角度旋转

6、JS部分对象和方法(setInterval)


效果图;



代码;

<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title></title> </head> <body> <canvas id="canvas" width="1000" height="1000" style="background: #000"> 您的浏览器不支持canvas标签,无法看到太阳系 </canvas> <script> var canvas = document.getElementById('canvas'); var cxt = canvas.getContext('2d'); //画轨道 function drawTrack(){ for(var i = 0 ; i < 8 ; i++){ cxt.beginPath(); cxt.arc(500 , 500 , (i + 1) * 50 , 0 , 360); cxt.closePath(); cxt.strokeStyle = "#fff"; cxt.stroke(); } } drawTrack(); //调用画轨道方法 //星球类 function Star(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++; } } //太阳 function Sun(){ //太阳继承星球 Star.call(this , 0 , 0 , 20 , 0 , "#f00" , "#f90"); } //水星 function Mercury(){ //水星继承星球 Star.call(this , 0 , -50 , 10 , 87.70 , "#a69697" , "#5c3e40"); } //金星 function Venus(){ //金星继承星球 Star.call(this , 0 , -100 , 10 , 224.701 , "#c4bbac" , "#1f1315"); } //地球 function Earth(){ //地球继承星球 Star.call(this , 0 , -150 , 10 , 365.2422 , "#78e1e8" , "#050c12"); } //火星 function Mars(){ //火星继承星球 Star.call(this , 0 , -200 , 10 , 686.98 , "#cec9b6" , "#76422d"); } //木星 function Jupiter(){ //木星继承星球 Star.call(this , 0 , -250 , 10 , 4332.589 , "#c0a48e" , "#322222"); } //土星 function Saturn(){ //土星继承星球 Star.call(this , 0 , -300 , 10 , 10759.5 , "#f7f9e3" , "#5c4533"); } //天王星 function Uranus(){ //天王星继承星球 Star.call(this , 0 , -350 , 10 , 30799.095 , "#a7e1e5" , "#19243a"); } //海王星 function Neptune(){ //海王星继承星球 Star.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 , 10); </script> </body> </html>

版权声明:本文为博主原创文章,未经博主允许不得转载。

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • HTML5的Canvas画图模拟太阳系周转

    HTML5的Canvas画图模拟太阳系周转

    2017-02-20 17:01

  • html5-Canvas可以在web中绘制各种图形

    html5-Canvas可以在web中绘制各种图形

    2017-02-04 09:02

  • Print Canvas element with jqprint

    Print Canvas element with jqprint

    2017-01-20 12:01

  • canvas常用api介绍(上)

    canvas常用api介绍(上)

    2016-09-16 15:00

网友点评
>