`
奥义之舞
  • 浏览: 282168 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

艺术!不是吗?【HTML5优秀代码】

 
阅读更多
<html>
<head>
    <title>Dragon Heart</title>
</head>
<body>
    <canvas id="canvas" width="1000" height="1000">
    </canvas>
    <script src="http://files.cnblogs.com/iamzhanglei/JscexMin.js" type="text/javascript"></script>
    <script>

        function fillCircle(ctx, r) {
            ctx.beginPath();
            ctx.moveTo(r, 0);
            ctx.fillStyle = 'rgb(245,50,50)';
            ctx.arc(0, 0, r, 0, Math.PI * 2, true);
            ctx.fill();
        }

        function branch(ctx, r, d, t, a) {
            ctx.save();
            ctx.rotate(t * a);
            ctx.translate(0, -r * (1 + d));
            wing(ctx, r * d, a);
            ctx.restore();
        }

        function feather(ctx, r) {
            if (r < 3) return;
            var d = 0.85;
            ctx.rotate(-0.03 * Math.PI);
            ctx.translate(0, -r * (1 + d));
            fillCircle(ctx, r);
            feather(ctx, r * d);
        }

        function wing(ctx, r, a) {
            if (r < 2.9) return;
            fillCircle(ctx, r);
            branch(ctx, r, 0.9561, 0.03 * Math.PI, a);
            ctx.save();
            ctx.rotate(0.55 * Math.PI);
            feather(ctx, 0.8 * r);
            ctx.restore();
        }

        function tail(ctx, s, a) {
            if (s < 0.5) return;
            var d = 0.98; // decay
            fillCircle(ctx, s);
            ctx.rotate(-0.15 * a);
            ctx.translate(0, s * (1 + d));
            tail(ctx, s * d, a);
        }

        function head(ctx) {
            fillCircle(ctx, 22);

            // mouth
            ctx.save();
            ctx.translate(-15, -3);
            ctx.beginPath();
            ctx.fillStyle = "white";
            ctx.arc(0, 0, 10, 0, Math.PI * 2, true);
            ctx.fill();
            ctx.restore();

            // eye
            ctx.translate(9, -4);
            ctx.beginPath();
            ctx.fillStyle = "black";
            ctx.arc(0, 0, 5, 0, Math.PI * 2, true);
            ctx.fill();

            // horn
            ctx.translate(6, -8);
            ctx.rotate(0.6 * Math.PI);
            wing(ctx, 5.5, 1.8);
        }

        function neck(ctx, s) {
            if (s < 10) { head(ctx); return; }
            var d = 0.85;
            fillCircle(ctx, s);
            ctx.save();
            ctx.rotate(-Math.PI / 2);
            ctx.translate(0, s);
            fillCircle(ctx, s / 2);
            ctx.restore();

            ctx.rotate(-0.15);
            ctx.translate(0, -s * (1 + d));
            neck(ctx, s * d);
        }
        var canvas = document.getElementById("canvas");
        var ctx = canvas.getContext("2d");
        function draw() {
            ctx.translate(430, 230);
            ctx.scale(0.4, 0.4);
            executeAsync().start();
        }
        var i = 1;
        var executeAsync = eval(Jscex.compile("async", function () {
            while (true) {
                $await(Jscex.Async.sleep(1));
                while (true) {
                    $await(Jscex.Async.sleep(35));
                    i++;
                    ctx.fillStyle = "white";
                    ctx.fillRect(-1500, -1500, 4000, 4000);
                    ctx.save();
                    ctx.translate(0, Math.cos(i * 0.1) * 40);
                    var a = Math.sin(i * 0.1);
                    // right wing
                    ctx.save();
                    ctx.rotate(Math.PI * 0.4);
                    wing(ctx, 18, a);
                    ctx.restore();
                    // left wing
                    ctx.save();
                    ctx.scale(-1, 1);
                    ctx.rotate(Math.PI * 0.4);
                    wing(ctx, 18, a);
                    ctx.restore();
                    // tail
                    ctx.save();
                    tail(ctx, 20, Math.sin(i * 0.05));
                    ctx.restore();
                    // head
                    neck(ctx, 22);
                    ctx.restore();
                }
            }
        }));
        draw();
    </script>
</body>
</html>
  • JscexMin.rar (16.9 KB)
  • 描述: JscexMin 的JS
  • 下载次数: 4
分享到:
评论
1 楼 toknowme 2011-11-07  

相关推荐

    代码之美(中文完整版).pdf

    本书既不是一本关于设计模式的书,也不是一本关于软件工程的书,它告诉你的不仅仅是一些正确的方式或者错误的方式。它让你站在那些优秀软件设计师的肩膀上,从他们的角度来看待问题。 本书给出了38位大师级程序员在...

    html+css+js制作的网页设计作业,包含多个子页面,主题是中国传统戏曲

    戏曲艺术是中华民族的璀灿明珠和无价瑰宝,戏曲文化蕴藏着“仁、义、礼、智、信”等中华优秀传统文化。 人类的跨文化艺术交流与传播是文明发展最主要的动力之一。中国传统戏曲历史悠久、积淀深厚,成为跨文化交流与...

    Dsure-HTML5网站,前端开发框架

    简介: ...网页是一门技术,更讲究艺术,没有绝对的山寨与抄袭,更多的,是不断的探索学习和借鉴,国内的设计应该有更多更适应国内需求的探索,因此有了dsure这个CSS开发框架,喜欢的童鞋尽情下载。

    Dsure CSS/HTML5网页开发框架 v2.1.rar

    Dsure CSS/HTML5网页开发框架简介: Dsure基于纯CSS的HTML5网站响应式开发框架,可用于国内/外网站开发,完美适用于Designers Site Program 全站静态系统   来历: Dsure参考了国内/外优秀的框架库,经过仔细研究...

    如何让PHP编码更加好看利于阅读

    写出优秀的程序代码是一门艺术,要想如此,就必须在一开始就养成良好的编程习惯。良好的编程习惯不仅有助于项目初期的设计(如模块化),还可以使你编写的代码更易于理解,从而使代码的维护工作更轻松、更省力。不好...

    网页设计大赛方案(第八届综合技能大赛之一).doc

    " " " " "素材音效质量高、占用空间小,图片、动画清晰 "5 " " " "生动,网页无冗余代码,无错误,下载速度快。 " " " " "综合运用多种网页特效技术,使页面既能统一风 "5 " " " "格,又可突出主题。 " " " "个性...

    排版布局设计技巧_对比+对齐+重复+亲密性(第3版)

    实际上,设计不仅仅是专业设计师的事情,比如,我是从事前端的开发的,虽然绝大部分时间是和HTML、CSS、JavaScript等这些代码打交道,但我需要维护自己的blog,需要做自己的幻灯片,更重要的是需要能够理解且欣赏...

    CSS网站布局实录 (第二版)PDF版

    《CSS网站布局实录:基于Web标准的网站设计指南(第2版)》内容提要: 本书是一本讲述基于Web标准的应用CSS进行网站布局设计与...感觉不是在看一本真金白银买来的书,而更象是偷看一个江湖上鲜见的手抄本……刺激! ——网友

    JS学习资料

    JavaScript+DOM编程艺术.pdf 概述: “本书理应奉为经典。文笔清晰,采用了优秀的编程原则,严格遵守相应的标准。真是完美的结合。” ——Slashdot “我要隆重推荐本书。它前所未有地演示了DOM脚本编程的真正潜力...

    simplemenu:用于新 Bittboy、Pocket Go、RetroFW 和 OpenDingux 设备的简单菜单启动器

    提供优秀建议的人 Dancero643: : MADX 代码许可证 https://www.gnu.org/licenses/gpl-3.0.en.html 艺术品许可证 知识共享 CC BY-NC-SA - https://creativecommons.org/licenses/by-nc-sa/3.0/ 来自...

Global site tag (gtag.js) - Google Analytics