• 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);
  • 相关阅读:
    Archlinux 下系统如何设置让 Wine 调用 ibus输入法
    ArchLinux下Ecplise软件报错
    ArchLinux下shadow服务报错
    【转载】maven入门1
    oracle_sql语句的大全
    pl/sql快速输入select等语句
    [转载]彻底卸载oracleXE数据库服务器
    [转载]struts1小项目
    [工作]双核系统struts-config.xml
    java request获取各种数据
  • 原文地址:https://www.cnblogs.com/artwl/p/3382991.html
Copyright © 2020-2023  润新知