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 这导致了开场要绘制所有的数据在同一行,还是那句话,看起来不够“神秘”,为了快速的进入“神秘”场景于是,略加改动。

    下图是改动后的效果:

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

     
  • 相关阅读:
    接口中可以定义内部类举例
    eclipse中项目maven update无法停止解决方法
    tomcat failed to start / could not publish server configuration解决
    导入项目时jsp带红叉,或者实现类提示需要override接口的问题
    常见异常与总结——一句话的描述
    Maven导入shiro的依赖后,欢迎页面404、shiro-features异常的解决方案:
    eclipse解决maven项目右键run as没有run on server的问题:
    SpringCloud搭建教程
    异常:java.lang.IllegalArgumentException: Could not resolve placeholder 'xxx' in value "${xxx}"
    SQL题1——查询所有购入商品为两种或两种以上的购物人记录
  • 原文地址:https://www.cnblogs.com/netqq/p/5542796.html
Copyright © 2011-2022 走看看