zoukankan      html  css  js  c++  java
  • js实现黑客帝国文字下落效果

    突然想到这个效果便想实现以下。

    当然免不了要百度一下,于是查找到 http://www.cnblogs.com/myvin/p/4775152.html这篇文章, 效果可以查看博文中的给出的效果图。那么我们直接分析代码吧

    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>The Matrix for Practice</title>
        <style type="text/css">
        *{margin: 0 auto;padding: 0 auto;}
        body{background: black;overflow: hidden;}
        h1{text-align: center;color: green;text-transform: uppercase;}
        </style>
    </head>
    <body>
        <h1>the matrix</h1>
        <canvas id="matrix"></canvas>
        <script type="text/javascript">
        var matrix=document.getElementById("matrix"); //标签
          var context=matrix.getContext("2d");    //设置为2d
        matrix.height=window.innerHeight; //高度和宽度
        matrix.width=window.innerWidth;
          var drop=[];
          var font_size=16;
          var columns=matrix.width/font_size; //计算所能承载最大的列数
          for(var i=0;i<columns;i++)
              drop[i]=1+Math.random()*10;
          
          function drawMatrix(){ //绘制
      
          //
        context.fillStyle="rgba(0, 0, 0, 0.1)";   //黑色背景,透明度为0.9
          context.fillRect(0,0,matrix.width,matrix.height);  //绘制黑色半透明层
      
      
        //绘制数据层
          context.fillStyle="green";
          //context.font=font_size+"px";
          for(var i=0;i<columns;i++){
              context.fillText(Math.floor(Math.random()*2),i*font_size,drop[i]*font_size);/*get 0 and 1 绘制到指定的(x,y) 点  */ 
      
              if(drop[i]*font_size>(matrix.height*1/3)&&Math.random()>0.95)/*reset*/
                  drop[i]=0;
              drop[i]++;
          }
      }
     var  cet= setInterval(drawMatrix,40)
       
       setTimeout(function(){  clearInterval(cet); },3000);
    </script>
    </body>
    </html>

    哈哈哈,直接将作者代码搬过来了,好了废话不多说直奔主题。

    我这里贴出的代码是改善过的

      if(drop[i]*font_size>(matrix.height*1/3)&&Math.random()>0.95)/*reset*/  

    这段代码原作者用的是2/3  但是实际效果第一次出现时候,一个整版面感觉像隔断了意向,而且需要“移动”到2/3处后才会错乱开来,感觉不够“神奇”于是稍加改动,当然,这样做并没有什么卵用,只是让整齐的版面时间减少了。

      drop[i]=1+Math.random()*10;

    这句代码也是我改后的,原作者设置的是固的值。没有后边的Math.random()*10 这导致了开场要绘制所有的数据在同一行,还是那句话,看起来不够“神秘”,为了快速的进入“神秘”场景于是,略加改动。

    下图是改动后的效果:

    当然这整体看起来感觉还是很平淡呀。于是继续进行改造

     
  • 相关阅读:
    sourcetree删除github远程仓库文件
    怎样去掉wordpress中默认的未分类目录
    解决LNMP环境无法显示所有WordPress主题及无法编辑主题页面
    炫龙笔记本组合快捷键
    原版win10
    whmcs之全民idc
    putty登陆sourceforge.net(设置登录)
    putty登陆sourceforge.net(密钥的设置)
    当android studio一直显示gradle compile dependency
    android与后台请求的例子
  • 原文地址:https://www.cnblogs.com/netqq/p/5542796.html
Copyright © 2011-2022 走看看