• HTML5 Canvas实现黑客帝国文字掉落效果


    效果:

    原理:

      用canvas逐行输出文字,然后让背景颜色逐渐加深,再随机中断某些列。

    代码:

    HTML:

    <canvas id="c"></canvas>

    CSS:

    canvas {display: block;}

    JS:

    var c = document.getElementById("c");
    var ctx = c.getContext("2d");
    
    //全屏
    c.height = window.innerHeight;
    c.width = window.innerWidth;
    
    //文字
    var txts = "0123456789";
    //转为数组
    txts = txts.split("");
    
    var font_size = 16;
    var columns = c.width/font_size; 
    //用于计算输出文字时坐标,所以长度即为列数
    var drops = [];
    //初始值
    for(var x = 0; x < columns; x++)
        drops[x] = 1; 
    
    //输出文字
    function draw()
    {
        //让背景逐渐由透明到不透明
        ctx.fillStyle = "rgba(0, 0, 0, 0.05)";
        ctx.fillRect(0, 0, c.width, c.height);
        
        ctx.fillStyle = "#0F0"; //文字颜色
        ctx.font = font_size + "px arial";
        //逐行输出文字
        for(var i = 0; i < drops.length; i++)
        {
            //随机取要输出的文字
            var text = txts[Math.floor(Math.random()*txts.length)];
            //输出文字,注意坐标的计算
            ctx.fillText(text, i*font_size, drops[i]*font_size);
            
            //如果绘满一屏或随机数大于0.95(此数可自行调整,效果会不同)
            if(drops[i]*font_size > c.height || Math.random() > 0.95)
                drops[i] = 0;
            
            //用于Y轴坐标增加
            drops[i]++;
        }
    }
    
    setInterval(draw, 33);
  • 相关阅读:
    VC2013一些感受
    第三周 分析程序题
    进度条——持续更新
    怪自己,不怪书
    源程序版本管理软件和项目管理软件
    学习进度条
    个人最终总结
    win8以上windows系统eclipse环境下图片显示乱码问题解决
    黄金点游戏
    编码用命令行执行的C语言词语统计程序
  • 原文地址:https://www.cnblogs.com/artwl/p/3382991.html
Copyright © 2020-2023  润新知