zoukankan      html  css  js  c++  java
  • 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);
  • 相关阅读:
    观察者模式
    系统高并发网络图书室
    java keytool
    ant 脚本使用技巧
    Unsupported major.minor version 51.0 错误解决方案
    Oracle的网络监听配置
    win8 JDK环境变量不生效
    javax.mail
    xmlrpc
    网络时间同步
  • 原文地址:https://www.cnblogs.com/artwl/p/3382991.html
Copyright © 2011-2022 走看看