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

下图是改动后的效果:

js实现黑客帝国文字下落效果

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

 
上一篇:【BZOJ3162】独钓寒江雪(树哈希,动态规划)


下一篇:Linux hostname对Oracle实例以及监听的影响