• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    html5使用canvas实现跟随光标跳动的火焰效果

    本效果的完整代码如下,把代码保存到HTML文件中打开也能查看效果,火焰会跟随光标:

    复制代码
    代码如下:

    <!DOCTYPE HTML>
    <head>
    <meta charset=utf-8" />
    <title>HTML5 Canvas火焰效果</title>
    <style type="text/css">
    body{margin: 0; padding: 0;}
    #canvas-keleyi-com {display: block;}
    </style>
    </head>
    <body>
    <canvas id="canvas-keleyi-com"></canvas>
    <script type="text/javascript">
    window.onload = function(){
    var keleyi_canvas = document.getElementById("canvas-kel"+"eyi-com");
    var ctx = keleyi_canvas.getContext("2d");
    var W = window.innerWidth, H = window.innerHeight;
    keleyi_canvas.width = W;
    keleyi_canvas.height = H;</p> <p>var particles = [];
    var mouse = {};</p> <p>//Lets create some particles now
    var particle_count = 100;
    for(var i = 0; i < particle_count; i++)
    {
    particles.push(new particle());
    }
    keleyi_canvas.addEventListener('mousemove', track_mouse, false);</p> <p>function track_mouse(e)
    {
    mouse.x = e.pageX;
    mouse.y = e.pageY;
    }</p> <p>function particle()
    {
    this.speed = {x: -2.5+Math.random()*5, y: -15+Math.random()*10};
    //location = mouse coordinates
    //Now the flame follows the mouse coordinates
    if(mouse.x && mouse.y)
    {
    this.location = {x: mouse.x, y: mouse.y};
    }
    else
    {
    this.location = {x: W/2, y: H/2};
    }
    //radius range = 10-30
    this.radius = 10+Math.random()*20;
    //life range = 20-30
    this.life = 20+Math.random()*10;
    this.remaining_life = this.life;
    //colors
    this.r = Math.round(Math.random()*255);
    this.g = Math.round(Math.random()*255);
    this.b = Math.round(Math.random()*255);
    }</p> <p>function draw()
    {
    ctx.globalCompositeOperation = "source-over";
    ctx.fillStyle = "black";
    ctx.fillRect(0, 0, W, H);
    ctx.globalCompositeOperation = "lighter";</p> <p>for(var i = 0; i < particles.length; i++)
    {
    var p = particles[i];
    ctx.beginPath();
    p.opacity = Math.round(p.remaining_life/p.life*100)/100
    var gradient = ctx.createRadialGradient(p.location.x, p.location.y, 0, p.location.x, p.location.y, p.radius);
    gradient.addColorStop(0, "rgba("+p.r+", "+p.g+", "+p.b+", "+p.opacity+")");
    gradient.addColorStop(0.5, "rgba("+p.r+", "+p.g+", "+p.b+", "+p.opacity+")");
    gradient.addColorStop(1, "rgba("+p.r+", "+p.g+", "+p.b+", 0)");
    ctx.fillStyle = gradient;
    ctx.arc(p.location.x, p.location.y, p.radius, Math.PI*2, false);
    ctx.fill();</p> <p>
    p.remaining_life--;
    p.radius--;
    p.location.x += p.speed.x;
    p.location.y += p.speed.y;</p> <p>if(p.remaining_life < 0 || p.radius < 0)
    {
    particles[i] = new particle();
    }
    }
    }</p> <p>setInterval(draw, 86);
    }
    </script>
    </body>
    </html>

    上一篇:编写html5时调试发现脚本php等网页js、css等失效
    下一篇:html特殊符号示例 html特殊字符编码对照表
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    html5使用canvas实现跟随光标跳动的火焰效果 html5,使用,canvas,实现,跟随,