• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

爱心树代码实现爱心表白树源码免费html+js+css

武飞扬头像
webl2580
帮助1

学新通

html代码

  1.  
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  2.  
    <html xml:lang="en" xmlns="http://www.w3.org/1999/xhtml">
  3.  
    <head>
  4.  
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  5.  
    <title>爱心树</title>
  6.  
    <link type="text/css" rel="stylesheet" href="https://blog.csdn.net/webl2580/article/details/renxi/default.css">
  7.  
    <script type="text/javascript" src="https://blog.csdn.net/webl2580/article/details/renxi/jquery.min.js"></script>
  8.  
    <script type="text/javascript" src="https://blog.csdn.net/webl2580/article/details/renxi/jscex.min.js"></script>
  9.  
    <script type="text/javascript" src="https://blog.csdn.net/webl2580/article/details/renxi/jscex-parser.js"></script>
  10.  
    <script type="text/javascript" src="https://blog.csdn.net/webl2580/article/details/renxi/jscex-jit.js"></script>
  11.  
    <script type="text/javascript" src="https://blog.csdn.net/webl2580/article/details/renxi/jscex-builderbase.min.js"></script>
  12.  
    <script type="text/javascript" src="https://blog.csdn.net/webl2580/article/details/renxi/jscex-async.min.js"></script>
  13.  
    <script type="text/javascript" src="https://blog.csdn.net/webl2580/article/details/renxi/jscex-async-powerpack.min.js"></script>
  14.  
    <script type="text/javascript" src="https://blog.csdn.net/webl2580/article/details/renxi/functions.js" charset="utf-8"></script>
  15.  
    <script type="text/javascript" src="https://blog.csdn.net/webl2580/article/details/renxi/love.js" charset="utf-8"></script>
  16.  
    <style type="text/css">
  17.  
    <!--
  18.  
    .STYLE1 {
  19.  
    color: #666666
  20.  
    }
  21.  
    -->
  22.  
    </style>
  23.  
    </head>
  24.  
    <body>
  25.  
    <audio autoplay="autopaly">
  26.  
    <source src="https://blog.csdn.net/webl2580/article/details/renxi.mp3" type="audio/mp3" />
  27.  
    </audio>
  28.  
    <div id="main">
  29.  
    <div id="error">(<a href="http://www.谷歌.cn/chrome/intl/zh-CN/landing_chrome.html?hl=zh-CN&brand=CHMI">Chrome</a>)或者火狐(<a href="http://firefox.com.cn/download/">Firefox</a>)浏览器,或者其他游览器的最新版本。</div>
  30.  
    <div id="wrap">
  31.  
    <div id="text">
  32.  
    <div id="code"> <font color="#FF0000"> <span class="say"></span><br>
  33.  
    <span class="say"> </span><br>
  34.  
    <span class="say"> 我知道我不会甜言蜜语,但是我会用行动证明一切</span><br>
  35.  
    <span class="say"> </span><br>
  36.  
    <span class="say"></span><br>
  37.  
    <span class="say"></span><br>
  38.  
    <span class="say"></span><br>
  39.  
    <span class="say">来</span><br>
  40.  
    <span class="say"> </span><br>
  41.  
    <span class="say"><span class="space"></span></span> </font>
  42.  
    </p>
  43.  
    </div>
  44.  
    </div>
  45.  
    <div id="clock-box"> <span class="STYLE1"></span><font color="#33CC00"></font> <span class="STYLE1">已经是……</span>
  46.  
    <div id="clock"></div>
  47.  
    </div>
  48.  
    <canvas id="canvas" width="1100" height="680"></canvas>
  49.  
    </div>
  50.  
    </div>
  51.  
    <script>
  52.  
    </script>
  53.  
    <script>
  54.  
    (function(){
  55.  
    var canvas = $('#canvas');
  56.  
     
  57.  
    if (!canvas[0].getContext) {
  58.  
    $("#error").show();
  59.  
    return false; }
  60.  
     
  61.  
    var width = canvas.width();
  62.  
    var height = canvas.height();
  63.  
    canvas.attr("width", width);
  64.  
    canvas.attr("height", height);
  65.  
    var opts = {
  66.  
    seed: {
  67.  
    x: width / 2 - 20,
  68.  
    color: "rgb(190, 26, 37)",
  69.  
    scale: 2
  70.  
    },
  71.  
    branch: [
  72.  
    [535, 680, 570, 250, 500, 200, 30, 100, [
  73.  
    [540, 500, 455, 417, 340, 400, 13, 100, [
  74.  
    [450, 435, 434, 430, 394, 395, 2, 40]
  75.  
    ]],
  76.  
    [550, 445, 600, 356, 680, 345, 12, 100, [
  77.  
    [578, 400, 648, 409, 661, 426, 3, 80]
  78.  
    ]],
  79.  
    [539, 281, 537, 248, 534, 217, 3, 40],
  80.  
    [546, 397, 413, 247, 328, 244, 9, 80, [
  81.  
    [427, 286, 383, 253, 371, 205, 2, 40],
  82.  
    [498, 345, 435, 315, 395, 330, 4, 60]
  83.  
    ]],
  84.  
    [546, 357, 608, 252, 678, 221, 6, 100, [
  85.  
    [590, 293, 646, 277, 648, 271, 2, 80]
  86.  
    ]]
  87.  
    ]]
  88.  
    ],
  89.  
    bloom: {
  90.  
    num: 700,
  91.  
    width: 1080,
  92.  
    height: 650,
  93.  
    },
  94.  
    footer: {
  95.  
    width: 1200,
  96.  
    height: 5,
  97.  
    speed: 10,
  98.  
    }
  99.  
    }
  100.  
     
  101.  
    var tree = new Tree(canvas[0], width, height, opts);
  102.  
    var seed = tree.seed;
  103.  
    var foot = tree.footer;
  104.  
    var hold = 1;
  105.  
     
  106.  
    canvas.click(function(e) {
  107.  
    var offset = canvas.offset(), x, y;
  108.  
    x = e.pageX - offset.left;
  109.  
    y = e.pageY - offset.top;
  110.  
    if (seed.hover(x, y)) {
  111.  
    hold = 0;
  112.  
    canvas.unbind("click");
  113.  
    canvas.unbind("mousemove");
  114.  
    canvas.removeClass('hand');
  115.  
    }
  116.  
    }).mousemove(function(e){
  117.  
    var offset = canvas.offset(), x, y;
  118.  
    x = e.pageX - offset.left;
  119.  
    y = e.pageY - offset.top;
  120.  
    canvas.toggleClass('hand', seed.hover(x, y));
  121.  
    });
  122.  
     
  123.  
    var seedAnimate = eval(Jscex.compile("async", function () {
  124.  
    seed.draw();
  125.  
    while (hold) {
  126.  
    $await(Jscex.Async.sleep(10));
  127.  
    }
  128.  
    while (seed.canScale()) {
  129.  
    seed.scale(0.95);
  130.  
    $await(Jscex.Async.sleep(10));
  131.  
    }
  132.  
    while (seed.canMove()) {
  133.  
    seed.move(0, 2);
  134.  
    foot.draw();
  135.  
    $await(Jscex.Async.sleep(10));
  136.  
    }
  137.  
    }));
  138.  
     
  139.  
    var growAnimate = eval(Jscex.compile("async", function () {
  140.  
    do {
  141.  
    tree.grow();
  142.  
    $await(Jscex.Async.sleep(10));
  143.  
    } while (tree.canGrow());
  144.  
    }));
  145.  
     
  146.  
    var flowAnimate = eval(Jscex.compile("async", function () {
  147.  
    do {
  148.  
    tree.flower(2);
  149.  
    $await(Jscex.Async.sleep(10));
  150.  
    } while (tree.canFlower());
  151.  
    }));
  152.  
     
  153.  
    var moveAnimate = eval(Jscex.compile("async", function () {
  154.  
    tree.snapshot("p1", 240, 0, 610, 680);
  155.  
    while (tree.move("p1", 500, 0)) {
  156.  
    foot.draw();
  157.  
    $await(Jscex.Async.sleep(10));
  158.  
    }
  159.  
    foot.draw();
  160.  
    tree.snapshot("p2", 500, 0, 610, 680);
  161.  
     
  162.  
    // 会有闪烁不得意这样做, (>﹏<)
  163.  
    canvas.parent().css("background", "url(" tree.toDataURL('image/png') ")");
  164.  
    canvas.css("background", "#ffe");
  165.  
    $await(Jscex.Async.sleep(300));
  166.  
    canvas.css("background", "none");
  167.  
    }));
  168.  
     
  169.  
    var jumpAnimate = eval(Jscex.compile("async", function () {
  170.  
    var ctx = tree.ctx;
  171.  
    while (true) {
  172.  
    tree.ctx.clearRect(0, 0, width, height);
  173.  
    tree.jump();
  174.  
    foot.draw();
  175.  
    $await(Jscex.Async.sleep(25));
  176.  
    }
  177.  
    }));
  178.  
     
  179.  
    var textAnimate = eval(Jscex.compile("async", function () {
  180.  
    var together = new Date();
  181.  
    together.setFullYear(2010,1 , 15); //时间年月日
  182.  
    together.setHours(16); //小时
  183.  
    together.setMinutes(53); //分钟
  184.  
    together.setSeconds(0); //秒前一位
  185.  
    together.setMilliseconds(2); //秒第二位
  186.  
     
  187.  
    $("#code").show().typewriter();
  188.  
    $("#clock-box").fadeIn(500);
  189.  
    while (true) {
  190.  
    timeElapse(together);
  191.  
    $await(Jscex.Async.sleep(1000));
  192.  
    }
  193.  
    }));
  194.  
     
  195.  
    var runAsync = eval(Jscex.compile("async", function () {
  196.  
    $await(seedAnimate());
  197.  
    $await(growAnimate());
  198.  
    $await(flowAnimate());
  199.  
    $await(moveAnimate());
  200.  
     
  201.  
    textAnimate().start();
  202.  
     
  203.  
    $await(jumpAnimate());
  204.  
    }));
  205.  
     
  206.  
    runAsync().start();
  207.  
    })();
  208.  
    </script>
  209.  
     
  210.  
     
  211.  
    </body>
  212.  
    </html>
学新通

js代码部分

  1.  
     
  2.  
    function random(min, max) {
  3.  
    return min Math.floor(Math.random() * (max - min 1));
  4.  
    }
  5.  
     
  6.  
    function bezier(cp, t) {
  7.  
    var p1 = cp[0].mul((1 - t) * (1 - t));
  8.  
    var p2 = cp[1].mul(2 * t * (1 - t));
  9.  
    var p3 = cp[2].mul(t * t);
  10.  
    return p1.add(p2).add(p3);
  11.  
    }
  12.  
     
  13.  
    function inheart(x, y, r) {
  14.  
    // x^2 (y-(x^2)^(1/3))^2 = 1
  15.  
    // http://www.wolframalpha.com/input/?i=x^2+(y-(x^2)^(1/3))^2 = 1
  16.  
    var z = ((x / r) * (x / r) (y / r) * (y / r) - 1) * ((x / r) * (x / r) (y / r) * (y / r) - 1) * ((x / r) * (x / r) (y / r) * (y / r) - 1) - (x / r) * (x / r) * (y / r) * (y / r) * (y / r);
  17.  
    return z < 0;
  18.  
    }
  19.  
     
  20.  
    Point = function(x, y) {
  21.  
    this.x = x || 0;
  22.  
    this.y = y || 0;
  23.  
    }
  24.  
    Point.prototype = {
  25.  
    clone: function() {
  26.  
    return new Point(this.x, this.y);
  27.  
    },
  28.  
    add: function(o) {
  29.  
    p = this.clone();
  30.  
    p.x = o.x;
  31.  
    p.y = o.y;
  32.  
    return p;
  33.  
    },
  34.  
    sub: function(o) {
  35.  
    p = this.clone();
  36.  
    p.x -= o.x;
  37.  
    p.y -= o.y;
  38.  
    return p;
  39.  
    },
  40.  
    div: function(n) {
  41.  
    p = this.clone();
  42.  
    p.x /= n;
  43.  
    p.y /= n;
  44.  
    return p;
  45.  
    },
  46.  
    mul: function(n) {
  47.  
    p = this.clone();
  48.  
    p.x *= n;
  49.  
    p.y *= n;
  50.  
    return p;
  51.  
    }
  52.  
    }
  53.  
     
  54.  
    Heart = function() {
  55.  
    // x = 16 sin^3 t
  56.  
    // y = 13 cos t - 5 cos 2t - 2 cos 3t - cos 4t
  57.  
    // http://www.wolframalpha.com/input/?i=x = 16 sin^3 t, y = (13 cos t - 5 cos 2t - 2 cos 3t - cos 4t)
  58.  
    var points = [], x, y, t;
  59.  
    for (var i = 10; i < 30; i = 0.2) {
  60.  
    t = i / Math.PI;
  61.  
    x = 16 * Math.pow(Math.sin(t), 3);
  62.  
    y = 13 * Math.cos(t) - 5 * Math.cos(2 * t) - 2 * Math.cos(3 * t) - Math.cos(4 * t);
  63.  
    points.push(new Point(x, y));
  64.  
    }
  65.  
    this.points = points;
  66.  
    this.length = points.length;
  67.  
    }
  68.  
    Heart.prototype = {
  69.  
    get: function(i, scale) {
  70.  
    return this.points[i].mul(scale || 1);
  71.  
    }
  72.  
    }
  73.  
     
  74.  
    Seed = function(tree, point, scale, color) {
  75.  
    this.tree = tree;
  76.  
     
  77.  
    var scale = scale || 1
  78.  
    var color = color || '#FF0000';
  79.  
     
  80.  
    this.heart = {
  81.  
    point : point,
  82.  
    scale : scale,
  83.  
    color : color,
  84.  
    figure : new Heart(),
  85.  
    }
  86.  
     
  87.  
    this.cirle = {
  88.  
    point : point,
  89.  
    scale : scale,
  90.  
    color : color,
  91.  
    radius : 5,
  92.  
    }
  93.  
    }
  94.  
    Seed.prototype = {
  95.  
    draw: function() {
  96.  
    this.drawHeart();
  97.  
    this.drawText();
  98.  
    },
  99.  
    addPosition: function(x, y) {
  100.  
    this.cirle.point = this.cirle.point.add(new Point(x, y));
  101.  
    },
  102.  
    canMove: function() {
  103.  
    return this.cirle.point.y < (this.tree.height 20);
  104.  
    },
  105.  
    move: function(x, y) {
  106.  
    this.clear();
  107.  
    this.drawCirle();
  108.  
    this.addPosition(x, y);
  109.  
    },
  110.  
    canScale: function() {
  111.  
    return this.heart.scale > 0.2;
  112.  
    },
  113.  
    setHeartScale: function(scale) {
  114.  
    this.heart.scale *= scale;
  115.  
    },
  116.  
    scale: function(scale) {
  117.  
    this.clear();
  118.  
    this.drawCirle();
  119.  
    this.drawHeart();
  120.  
    this.setHeartScale(scale);
  121.  
    },
  122.  
    drawHeart: function() {
  123.  
    var ctx = this.tree.ctx, heart = this.heart;
  124.  
    var point = heart.point, color = heart.color,
  125.  
    scale = heart.scale;
  126.  
    ctx.save();
  127.  
    ctx.fillStyle = color;
  128.  
    ctx.translate(point.x, point.y);
  129.  
    ctx.beginPath();
  130.  
    ctx.moveTo(0, 0);
  131.  
    for (var i = 0; i < heart.figure.length; i ) {
  132.  
    var p = heart.figure.get(i, scale);
  133.  
    ctx.lineTo(p.x, -p.y);
  134.  
    }
  135.  
    ctx.closePath();
  136.  
    ctx.fill();
  137.  
    ctx.restore();
  138.  
    },
  139.  
    drawCirle: function() {
  140.  
    var ctx = this.tree.ctx, cirle = this.cirle;
  141.  
    var point = cirle.point, color = cirle.color,
  142.  
    scale = cirle.scale, radius = cirle.radius;
  143.  
    ctx.save();
  144.  
    ctx.fillStyle = color;
  145.  
    ctx.translate(point.x, point.y);
  146.  
    ctx.scale(scale, scale);
  147.  
    ctx.beginPath();
  148.  
    ctx.moveTo(0, 0);
  149.  
    ctx.arc(0, 0, radius, 0, 2 * Math.PI);
  150.  
    ctx.closePath();
  151.  
    ctx.fill();
  152.  
    ctx.restore();
  153.  
    },
  154.  
    drawText: function() {
  155.  
    var ctx = this.tree.ctx, heart = this.heart;
  156.  
    var point = heart.point, color = heart.color,
  157.  
    scale = heart.scale;
  158.  
    ctx.save();
  159.  
    ctx.strokeStyle = color;
  160.  
    ctx.fillStyle = color;
  161.  
    ctx.translate(point.x, point.y);
  162.  
    ctx.scale(scale, scale);
  163.  
    ctx.moveTo(0, 0);
  164.  
    ctx.lineTo(15, 15);
  165.  
    ctx.lineTo(60, 15);
  166.  
    ctx.stroke();
  167.  
     
  168.  
    ctx.moveTo(0, 0);
  169.  
    ctx.scale(0.75, 0.75);
  170.  
    ctx.font = "12px 微软雅黑,Verdana"; // 字号肿么没有用? (ˉ(∞)ˉ)
  171.  
    ctx.fillText("Come Baby", 23, 10);
  172.  
    ctx.restore();
  173.  
    },
  174.  
    clear: function() {
  175.  
    var ctx = this.tree.ctx, cirle = this.cirle;
  176.  
    var point = cirle.point, scale = cirle.scale, radius = 26;
  177.  
    var w = h = (radius * scale);
  178.  
    ctx.clearRect(point.x - w, point.y - h, 4 * w, 4 * h);
  179.  
    },
  180.  
    hover: function(x, y) {
  181.  
    var ctx = this.tree.ctx;
  182.  
    var pixel = ctx.getImageData(x, y, 1, 1);
  183.  
    return pixel.data[3] == 255
  184.  
    }
  185.  
    }
  186.  
     
  187.  
    Footer = function(tree, width, height, speed) {
  188.  
    this.tree = tree;
  189.  
    this.point = new Point(tree.seed.heart.point.x, tree.height - height / 2);
  190.  
    this.width = width;
  191.  
    this.height = height;
  192.  
    this.speed = speed || 2;
  193.  
    this.length = 0;
  194.  
    }
  195.  
    Footer.prototype = {
  196.  
    draw: function() {
  197.  
    var ctx = this.tree.ctx, point = this.point;
  198.  
    var len = this.length / 2;
  199.  
     
  200.  
    ctx.save();
  201.  
    ctx.strokeStyle = 'rgb(35, 31, 32)';
  202.  
    ctx.lineWidth = this.height;
  203.  
    ctx.lineCap = 'round';
  204.  
    ctx.lineJoin = 'round';
  205.  
    ctx.translate(point.x, point.y);
  206.  
    ctx.beginPath();
  207.  
    ctx.moveTo(0, 0);
  208.  
    ctx.lineTo(len, 0);
  209.  
    ctx.lineTo(-len, 0);
  210.  
    ctx.stroke();
  211.  
    ctx.restore();
  212.  
     
  213.  
    if (this.length < this.width) {
  214.  
    this.length = this.speed;
  215.  
    }
  216.  
    }
  217.  
    }
  218.  
     
  219.  
    Tree = function(canvas, width, height, opt) {
  220.  
    this.canvas = canvas;
  221.  
    this.ctx = canvas.getContext('2d');
  222.  
    this.width = width;
  223.  
    this.height = height;
  224.  
    this.opt = opt || {};
  225.  
     
  226.  
    this.record = {};
  227.  
     
  228.  
    this.initSeed();
  229.  
    this.initFooter();
  230.  
    this.initBranch();
  231.  
    this.initBloom();
  232.  
    }
  233.  
    Tree.prototype = {
  234.  
    initSeed: function() {
  235.  
    var seed = this.opt.seed || {};
  236.  
    var x = seed.x || this.width / 2;
  237.  
    var y = seed.y || this.height / 2;
  238.  
    var point = new Point(x, y);
  239.  
    var color = seed.color || '#FF0000';
  240.  
    var scale = seed.scale || 1;
  241.  
     
  242.  
    this.seed = new Seed(this, point, scale, color);
  243.  
    },
  244.  
     
  245.  
    initFooter: function() {
  246.  
    var footer = this.opt.footer || {};
  247.  
    var width = footer.width || this.width;
  248.  
    var height = footer.height || 5;
  249.  
    var speed = footer.speed || 2;
  250.  
    this.footer = new Footer(this, width, height, speed);
  251.  
    },
  252.  
     
  253.  
    initBranch: function() {
  254.  
    var branchs = this.opt.branch || []
  255.  
    this.branchs = [];
学新通

css代码部分

  1.  
     
  2.  
    -->
  3.  
    </style>
  4.  
    </head>
  5.  
    <body>
  6.  
    <audio autoplay="autopaly">
  7.  
    <source src="https://blog.csdn.net/webl2580/article/details/renxi.mp3" type="audio/mp3" />
  8.  
    </audio>
  9.  
    <div id="main">
  10.  
    <div id="error">(<a href="http://www.谷歌.cn/chrome/intl/zh-CN/landing_chrome.html?hl=zh-CN&brand=CHMI">Chrome</a>)或者火狐(<a href="http://firefox.com.cn/download/">Firefox</a>)浏览器,或者其他游览器的最新版本。</div>
  11.  
    <div id="wrap">
  12.  
    <div id="text">
  13.  
    <div id="code"> <font color="#FF0000"> <span class="say"></span><br>
  14.  
    <span class="say"> </span><br>
  15.  
    <span class="say"> 我知道我不会甜言蜜语,但是我会用行动证明一切</span><br>
  16.  
    <span class="say"> </span><br>
  17.  
    <span class="say"></span><br>
  18.  
    <span class="say"></span><br>
  19.  
    <span class="say"></span><br>
  20.  
    <span class="say">来</span><br>
  21.  
    <span class="say"> </span><br>
  22.  
    <span class="say"><span class="space"></span></span> </font>
  23.  
    </p>
  24.  
    </div>
  25.  
    </div>
  26.  
    <div id="clock-box"> <span class="STYLE1"></span><font color="#33CC00"></font> <span class="STYLE1">已经是……</span>
  27.  
    <div id="clock"></div>
  28.  
    </div>
  29.  
    <canvas id="canvas" width="1100" height="680"></canvas>
  30.  
    </div>
  31.  
    </div>
  32.  
    <script>
  33.  
    </script>
  34.  
    <script>
  35.  
    (function(){
  36.  
    var canvas = $('#canvas');
  37.  
     
  38.  
    if (!canvas[0].getContext) {
  39.  
    $("#error").show();
  40.  
    return false; }
  41.  
     
  42.  
    var width = canvas.width();
  43.  
    var height = canvas.height();
  44.  
    canvas.attr("width", width);
  45.  
    canvas.attr("height", height);
  46.  
    var opts = {
  47.  
    seed: {
  48.  
    x: width / 2 - 20,
  49.  
    color: "rgb(190, 26, 37)",
  50.  
    scale: 2
  51.  
    },
  52.  
    branch: [
  53.  
    [535, 680, 570, 250, 500, 200, 30, 100, [
  54.  
    [540, 500, 455, 417, 340, 400, 13, 100, [
  55.  
    [450, 435, 434, 430, 394, 395, 2, 40]
  56.  
    ]],
  57.  
    [550, 445, 600, 356, 680, 345, 12, 100, [
  58.  
    [578, 400, 648, 409, 661, 426, 3, 80]
  59.  
    ]],
  60.  
    [539, 281, 537, 248, 534, 217, 3, 40],
  61.  
    [546, 397, 413, 247, 328, 244, 9, 80, [
  62.  
    [427, 286, 383, 253, 371, 205, 2, 40],
  63.  
    [498, 345, 435, 315, 395, 330, 4, 60]
  64.  
    ]],
  65.  
    [546, 357, 608, 252, 678, 221, 6, 100, [
  66.  
    [590, 293, 646, 277, 648, 271, 2, 80]
  67.  
    ]]
  68.  
    ]]
  69.  
    ],
  70.  
    bloom: {
  71.  
    num: 700,
  72.  
    width: 1080,
  73.  
    height: 650,
  74.  
    },
  75.  
    footer: {
  76.  
    width: 1200,
  77.  
    height: 5,
  78.  
    speed: 10,
  79.  
    }
  80.  
    }
  81.  
     
  82.  
    var tree = new Tree(canvas[0], width, height, opts);
  83.  
    var seed = tree.seed;
  84.  
    var foot = tree.footer;
  85.  
    var hold = 1;
  86.  
     
  87.  
    canvas.click(function(e) {
  88.  
    var offset = canvas.offset(), x, y;
  89.  
    x = e.pageX - offset.left;
  90.  
    y = e.pageY - offset.top;
  91.  
    if (seed.hover(x, y)) {
  92.  
    hold = 0;
  93.  
    canvas.unbind("click");
  94.  
    canvas.unbind("mousemove");
  95.  
    canvas.removeClass('hand');
  96.  
    }
  97.  
    }).mousemove(function(e){
  98.  
    var offset = canvas.offset(), x, y;
  99.  
    x = e.pageX - offset.left;
  100.  
    y = e.pageY - offset.top;
  101.  
    canvas.toggleClass('hand', seed.hover(x, y));
  102.  
    });
  103.  
     
  104.  
    var seedAnimate = eval(Jscex.compile("async", function () {
  105.  
    seed.draw();
  106.  
    while (hold) {
  107.  
    $await(Jscex.Async.sleep(10));
  108.  
    }
  109.  
    while (seed.canScale()) {
  110.  
    seed.scale(0.95);
  111.  
    $await(Jscex.Async.sleep(10));
  112.  
    }
  113.  
    while (seed.canMove()) {
  114.  
    seed.move(0, 2);
  115.  
    foot.draw();
  116.  
    $await(Jscex.Async.sleep(10));
  117.  
    }
  118.  
    }));
  119.  
     
  120.  
    var growAnimate = eval(Jscex.compile("async", function () {
  121.  
    do {
  122.  
    tree.grow();
  123.  
    $await(Jscex.Async.sleep(10));
  124.  
    } while (tree.canGrow());
  125.  
    }));
  126.  
     
  127.  
    var flowAnimate = eval(Jscex.compile("async", function () {
  128.  
    do {
  129.  
    tree.flower(2);
  130.  
    $await(Jscex.Async.sleep(10));
  131.  
    } while (tree.canFlower());
  132.  
    }));
  133.  
     
  134.  
    var moveAnimate = eval(Jscex.compile("async", function () {
  135.  
    tree.snapshot("p1", 240, 0, 610, 680);
  136.  
    while (tree.move("p1", 500, 0)) {
  137.  
    foot.draw();
  138.  
    $await(Jscex.Async.sleep(10));
  139.  
    }
  140.  
    foot.draw();
  141.  
    tree.snapshot("p2", 500, 0, 610, 680);
  142.  
     
  143.  
    // 会有闪烁不得意这样做, (>﹏<)
  144.  
    canvas.parent().css("background", "url(" tree.toDataURL('image/png') ")");
  145.  
    canvas.css("background", "#ffe");
  146.  
    $await(Jscex.Async.sleep(300));
  147.  
    canvas.css("background", "none");
  148.  
    }));
  149.  
     
  150.  
    var jumpAnimate = eval(Jscex.compile("async", function () {
  151.  
    var ctx = tree.ctx;
  152.  
    while (true) {
  153.  
    tree.ctx.clearRect(0, 0, width, height);
  154.  
    tree.jump();
  155.  
    foot.draw();
  156.  
    $await(Jscex.Async.sleep(25));
  157.  
    }
  158.  
    }));
  159.  
     
  160.  
    var textAnimate = eval(Jscex.compile("async", function () {
  161.  
    var together = new Date();
  162.  
    together.setFullYear(2010,1 , 15); //时间年月日
  163.  
    together.setHours(16); //小时
  164.  
    together.setMinutes(53); //分钟
  165.  
    together.setSeconds(0); //秒前一位
  166.  
    together.setMilliseconds(2); //秒第二位
  167.  
     
  168.  
    $("#code").show().typewriter();
  169.  
    $("#clock-box").fadeIn(500);
  170.  
    while (true) {
  171.  
    timeElapse(together);
  172.  
    $await(Jscex.Async.sleep(1000));
  173.  
    }
  174.  
    }));//全部代码在企鹅裙311075050
  175.  
     
  176.  
    var runAsync = eval(Jscex.compile("async", function () {
  177.  
    $await(seedAnimate());
学新通

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgfafif
系列文章
更多 icon
同类精品
更多 icon
继续加载