实例介绍
【实例简介】
【实例截图】
【核心代码】
<!doctype html> <html> <head> <title>canvas太阳系</title> <meta charset='utf-8'> </head> <body> <canvas width='1000' height='1000' style='background:#000' id='canvas'> 您的浏览器不支持HTML5 canvas,无法查看canvas效果 </canvas> <script type="text/javascript"> //获取canvas绘图环境 var context = document.getElementById('canvas').getContext('2d'); var time = 0; //星球轨道 function drawTrack(){ for(var i = 0; i < 8; i ){ //开始路径 context.beginPath(); context.arc(500,500,(i 1)*50,0,360,false); //关闭路径 context.closePath(); context.strokeStyle = '#fff'; context.stroke(); } } //执行以下此函数,画出各星球的轨道 drawTrack(); //星球 星球对象的构造方法 实例化后能画出所有的星球 function Star(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.draw = function(){ //异次元空间进行绘画 context.save(); //重设0,0坐标点 context.translate(500,500); //设置旋转角度 context.rotate(time*360/this.cycle*Math.PI/180); context.beginPath(); context.arc(this.x,this.y,this.radius,0,360,false); context.closePath(); //星球的填充色(径向渐变 开始色和结束色) this.color = context.createRadialGradient(this.x,this.y,0,this.x,this.y,this.radius); this.color.addColorStop(0,this.sColor); this.color.addColorStop(1,this.eColor); context.fillStyle = this.color; context.fill(); context.restore(); time =1; } } //各星球构造方法 从star中继承 function Sun(){ Star.call(this,0,0,20,'#f00','#f90',0); } function Mercury(){ Star.call(this,0,-50,10,'#A69697','#5C3E40',87.70); } function Venus(){ Star.call(this,0,-100,10,'#C4BBAC','#1F1315',224.701); } function Earth(){ Star.call(this,0,-150,10,'#78B1E8','#050C12',365.2422); } function Mars(){ Star.call(this,0,-200,10,'#CEC9B6','#76422D',686.98); } function Jupiter(){ Star.call(this,0,-250,10,'#C0A48E','#322222',4332.589); } function Saturn(){ Star.call(this,0,-300,10,'#F7F9E3','#5C4533',10759.5); } function Uranus(){ Star.call(this,0,-350,10,'#A7E1E5','#19243A',30799.095); } function Neptune(){ Star.call(this,0,-400,10,'#0661B2','#1E3B73',164.8*365); } //各星球对象的实例化 var sun = new Sun(); var water = new Mercury(); var gold = new Venus(); var diqiu = new Earth(); var fire = new Mars(); var wood = new Jupiter(); var soil = new Saturn(); var sky = new Uranus(); var sea = new Neptune(); function move(){ //清除画布 context.clearRect(0,0,1000,1000); //重新绘制一遍轨道 drawTrack(); sun.draw(); water.draw(); gold.draw(); diqiu.draw(); fire.draw(); wood.draw(); soil.draw(); sky.draw(); sea.draw(); } //星球围绕太阳运动起来 setInterval(move,100); </script> </body> </html>
好例子网口号:伸出你的我的手 — 分享!
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论