Canvas之太阳系

<!DOCTYPE html>
<html>
<head>
    <title>太阳系</title>
</head>

<body>
    <canvas id="canvas" width="1000" height="1000" style="background: #000">您的浏览器不支持</canvas>
    <script>
        var cxt = document.getElementById('canvas').getContext('2d');//设置2d环境
        //轨道
        function drawTrack() {
            for (var i = 0; i < 8; i++) {
                cxt.beginPath();
                cxt.arc(500, 500, 50 * (i + 1), 0, 360, false);
                cxt.closePath();
                cxt.strokeStyle = "#fff";
                cxt.stroke();
            }
        }
        //drawTrack();
        //星球
        function drawStar(x, y, radius, startColor, endColor, cycle) {
            //星球的坐标点、半径、颜色(开始、结束)、公转周期
            this.x = x;
            this.y = y;
            this.radius = radius;
            this.startColor = startColor;
            this.endColor = endColor;
            this.cycle = cycle;
            //渐变颜色空对象
            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.startColor);
                this.color.addColorStop(1, this.endColor);
                cxt.fillStyle = this.color;
                cxt.fill();
                cxt.restore();

                this.time += 1;
            }
        }
        //创建一个太阳对象的构造函数
        function Sun() {
            //第一个参数是this,从第二个参数开始才是drawStar方法的参数
            drawStar.call(this, 0, 0, 20, "#f60", "#f90", 0);
        }
        //水星
        function Mercury() {
            drawStar.call(this, 0, -50, 10, "#a69697", "#5c3e40", 87.7);
        }
        //金星
        function Venus() {
            drawStar.call(this, 0, -100, 10, "#c4bbac", "#1f1315", 224.701);
        }
        //地球
        function Earth() {
            drawStar.call(this, 0, -150, 10, "#78B1E8", "#050C12", 365.2422);
        }
        //火星
        function Mars() {
            drawStar.call(this, 0, -200, 10, "#CEC9B6", "#76422D", 686.98);
        }
        //木星
        function Jupiter() {
            drawStar.call(this, 0, -250, 10, "#C0A48E", "#322222", 4332.589);
        }
        //土星
        function Saturn() {
            drawStar.call(this, 0, -300, 10, "#F7F9E3", "#5C4533", 10759.5);
        }
        //天王星
        function Uranus() {
            drawStar.call(this, 0, -350, 10, "#A7E1E5", "#19243A", 30799.095);
        }
        //海王星
        function Neptune() {
            drawStar.call(this, 0, -400, 10, "#0661B2", "#1E3B73", 164.8 * 365);
        }
        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 drawAll() {
            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(drawAll, 10);
    </script>
</body>
</html>

时间: 2024-10-12 00:52:40

Canvas之太阳系的相关文章

canvas之太阳系效果

星球 变量名 公转周期 光色 暗色 水星 Mercury 87.70 #a69697 #5c3e40 金星 Venus 224.701.70 #c4bbac #1f1315 地球 Earth 365.2422 #78b1e8 #050c12 火星 Mars 686.98 #cec9b6 #76422d 木星 Jupiter 4332.589 #c0a48e #322 土星 Saturn 10759.95 #f7f9e3 #5c4553 天王星 Uranus 30799.095 #a7e115 #

[ html canvas ] canvas绘制太阳系实例代码

1 <!DOCTYPE html> 2 <html lang='zh-cn'> 3 <head> 4 <title>Insert you title</title> 5 <meta name='description' content='this is my page'> 6 <meta name='keywords' content='keyword1,keyword2,keyword3'> 7 <meta htt

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

有一个需求是:在一个图片按钮上点击,在按钮的上方弹出一个弹框,根据弹框的内容页面做不同的显示.这个其实没什么难的,主要是要控制好弹框的显示位置,让弹框显示在图片的正上方的中间. 一开始是用的Popupwindow,但是Popupwindow不能给弹窗之外的页面加一个半透明的蒙层,当然可以在页面上加一个专门的作为蒙层的View,但是很显然,这么做会代码变得很恶心,于是又换成了Dialog,因为Dialog弹出的时候会自动加一个蒙层的,但是这个时候,弹框显示位置的Y坐标不对了,后来一顿查,原来Dia

[Canvas学习]动画

学习目的:通过JavaScript操控<canvas>对象,实现交互动画. 动画的基本步骤 1. 清空canvas,使用clearRect方法 2. 保存canvas状态 3. 绘制动画图形 4. 恢复canvas状态 操控动画Controlling an animation setInterval(function, delay) setTimeout(function, delay) requestAnimationFrame(callback) 太阳系运动的小例子 <canvas

HTML5_画布_太阳系

HTML5_画布_太阳系 一.canvas属性和方法的简单介绍①对于不支持canvas标签的浏览器需要显示"不支持canvas"使用IE11浏览器的开发人员工具,仿真:文档模式=8,显示:IE8不支持canvas 默认的画布背景是白色的,可以给它加一个背景样式 \App3_HTML5\Module2_Canvas\canvas-1.html <!DOCTYPE html> <html> <head lang="en"> <m

详述canvas(三)—绘制图形/填充和渐变

未闭合的图形也会被填充 <body> <canvas id = "palette" width="500px" height="500px"> 您的浏览器不支持canvas标签,请升级浏览器或更换其它浏览器 </canvas> </body> </html> <script> var palette = document.querySelector("#palett

three.js模拟实现太阳系行星体系

概况如下: 1.SphereGeometry实现自转的太阳: 2.RingGeometry实现太阳系星系的公转轨道: 3.ImageUtils加载球体和各行星贴图: 4.canvas中createRadialGradient实现太阳发光效果: 5.THREE.Sprite精灵实现太阳系行星. 效果图如下: 预览地址:three.js模拟实现太阳系行星体系 初始化场景.相机.渲染器,设置相机位置. 1 // 初始化场景 2 var scene = new THREE.Scene(); 3 // 初

angular8 + threejs 实现太阳系3D动画

坑! 当项目决定要做宇宙星空效果的时候,我百度了一波:发现了threejs:然后就从0开始学习了:一路上坑坑洼洼的:网上确实有相关文章,但没有相对于新手的:尤其是我这种现看文档现做的:而且很多代码都是使用原生js或者jquery的: 这次是我把threejs引入angular8做的一个太阳系效果:至于后面怎么交互的:后面再补:首先把效果做出来:先上图~~~静态图,实际效果是可以动的 首先安装: // 安装threejs npm i three -s // npm i [email protect

HTML5新增Canvas标签及对应属性、API详解(基础一)

知识说明: HTML5新增的canvas标签,通过创建画布,在画布上创建任何想要的形状,下面将canvas的API以及属性做一个整理,并且附上时钟的示例,便于后期复习学习!Fighting! 一.标签原型 <canvas width=”1000” height=”1000” id=”myCanvas”> 您的浏览器版本过低,不支持HTML5新增的canvas标签. </canvas> 使用js获取该画布,并指定对象 <script> Var canvasID = doc