注册 登录
编程论坛 JavaScript论坛

HTML5 之 太阳-地球-月亮

冰镇柠檬汁儿 发布于 2015-05-28 22:44, 1953 次点击
<!DOCTYPE html>

<html lang="en" xmlns="http://www.
<head>
    <meta charset="utf-8" />
    <title></title>
</head>
<body>
    <canvas width="800" height="600" style="background-color:#000;" id="em"></canvas>
    <script>
        var time = 0;
        function earth() {
            var gc = document.getElementById('em').getContext('2d'), grad = null;

            gc.clearRect(0, 0, 800, 600);
            //绘制地球轨道
            gc.beginPath();
            gc.arc(400, 300, 220, 0, 360);
            gc.closePath();
            gc.strokeStyle = 'rgb(100,100,100)';
            gc.stroke();
            //绘制太阳
            gc.beginPath();
            gc.arc(400, 300, 40, 0, 360);
            gc.closePath();
            grad = gc.createRadialGradient(400, 300, 0, 400, 300, 35);
            grad.addColorStop(0, 'rgb(255,0,0)');
            grad.addColorStop(1, 'rgb(255,153,0)');
            gc.fillStyle = grad;
            gc.fill();
            //绘制地球
            gc.save();
            gc.translate(400, 300);
            gc.rotate(time * 360 / 365.25 * Math.PI / 180);
            gc.beginPath();
            gc.arc(0, -220, 15, 0, 360);
            gc.closePath();
            grad = gc.createRadialGradient(0, -220, 0, 0, -220, 15);
            grad.addColorStop(0, 'rgb(120,193,248)');
            grad.addColorStop(1, 'rgb(5,13,18)');
            gc.fillStyle = grad;
            gc.fill();
            //月球轨道
            gc.beginPath();
            gc.arc(0, -220, 50, 0, 360);
            gc.closePath();
            gc.stroke();
            //绘制月球
            gc.save();
            gc.translate(0, -220);
            gc.rotate(time * 360 / 27.3 * Math.PI / 180);
            gc.beginPath();
            gc.arc(0, -50, 5, 0, 360);
            gc.closePath();
            grad = gc.createRadialGradient(0, -50, 0, 0, -50, 5);
            grad.addColorStop(0, 'rgb(255,255,255)');
            grad.addColorStop(1, 'rgb(150,150,150)');
            gc.fillStyle = grad;
            gc.fill();
            gc.restore();

            gc.restore();

            time += 0.25;
        }

        earth();
        setInterval(earth, 25);
    </script>
</body>
</html>
15 回复
#2
hu9jj2015-05-29 06:35
收藏
#3
wmf20142015-05-29 09:24
转反了吧,通常表示从西往东转都是逆时针的。
#4
wp2319572015-05-29 09:26
在神马条件下测试楼主的代码呢
#5
tlliqi2015-05-29 09:26
转反了
#6
wp2319572015-05-29 09:32
网上说  自北极向下看  地球公转就是逆时针的转
#7
纳兰伽香2015-05-29 09:32
她们说反了  那我去转转
#8
wp2319572015-05-29 09:33
以下是引用wp231957在2015-5-29 09:26:21的发言:

在神马条件下测试楼主的代码呢



给它存成html后用浏览器就看到效果了
#9
wmf20142015-05-29 09:55
先新建一个txt,代码拷贝进去,然后改名txt为htm
#10
wp2319572015-05-29 10:07
以下是引用wmf2014在2015-5-29 09:55:20的发言:

先新建一个txt,代码拷贝进去,然后改名txt为htm



有那个编译器吗  咋知道哪句语法是对的 哪句语法是错的
#11
龙牙2015-05-29 12:31
看看
#12
冰镇柠檬汁儿2015-05-29 12:43
以下是引用wp231957在2015-5-29 10:07:42的发言:
有那个编译器吗  咋知道哪句语法是对的 哪句语法是错的

把代码保存到html文件中,直接在浏览器里跑就能看到效果了,不用你担心错误,代码不通过,我也不会发上来
IE6/7/8不支持这个代码
#13
wp2319572015-05-29 13:44
回复 12楼 冰镇柠檬汁儿
但是要是自己写  需要神马基础  解释型语言没有编译器吗
#14
冰镇柠檬汁儿2015-05-29 16:59
编译器?浏览器就是编译器
#15
zx091232015-06-01 16:52
回复 9楼 wmf2014
试试
#16
zhzoli2015-06-03 09:53
楼主的编程水平高啊!!!
1