1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>二进制雨</title>
</head>
<body align="center">

<h2>二进制雨</h2>

<-- 宽高原先是1000*600 js忘了改-->
<canvas id="myCanvas" width="480px" height="320px" style="background-color: black;"></canvas>

<script>

var draw=function(ctx,x,y,size){
this.ctx=ctx;
this.x=x;
this.y=y;
this.size=size;
var y1=this.y;
this.drawText=function(){
var str=Math.ceil(Math.random()*10000).toString(2);
var grd=this.ctx.createLinearGradient(this.x,this.y,this.x,this.y-this.ctx.measureText(str).width);
grd.addColorStop(0,"#00FF00");
grd.addColorStop(1,"#004400");
this.ctx.fillStyle=grd;
this.ctx.font=this.size+"px Arial";
for(var i=str.length-1;i>=0;i--) {
this.ctx.fillText(str.charAt(i), this.x, y1-=15);
}
y1=this.y+=10;
if(y1-720+this.ctx.measureText(str).width>0){
this.x=Math.ceil(Math.random()*1000);
y1=this.y=Math.ceil(Math.random()*100);
}
}
};

var rain=function(ctx,length){
this.length=length;
this.ctx=ctx;
var x=[];
var y=[];
var size=[];
var texts=[];
var i=0;
for(;i<length;i++){
x[i]=Math.ceil(Math.random()*1000);
y[i]=Math.ceil(Math.random()*500);
size[i]=Math.ceil(Math.random()*15);
texts[i]=new draw(this.ctx,x[i],y[i],size[i]);
}
this.run=function(){
ctx.clearRect(0,0,1000,600);
for(var j=0;j<length;j++){
texts[j].drawText();
}
};

};

var canvas=document.getElementById("myCanvas");
var ctx=canvas.getContext("2d");
var rain0=new rain(ctx,100);
setInterval(rain0.run,50);

</script>
</body>
</html>

    

当时是初学 并没有对代码优化,所以看看就好. 

canvas二进制雨  | 菜鸟工具
预览https://c.runoob.com/codedemo/3301

最新文章

  1. 【精粹系列】Mysql精粹
  2. 关于vs2012、tfs2012、windows server 2008r2一些记录
  3. C#Light v0.007 又一次重大更新
  4. c#基础之长度可变类型相同的参数列表
  5. js/jquery 操作document对象
  6. PHP练习项目笔记之COOKIES
  7. 如何让celery接受定制的参数
  8. Java源码学习 -- java.lang.StringBuilder,java.lang.StringBuffer,java.lang.AbstractStringBuilder
  9. [转]安装PIL时注册表中找不到python2.7
  10. MATLAB cftool工具数据拟合结果好坏判断
  11. xlwt模块的使用
  12. Android软键盘的隐藏显示、事件监听的代码
  13. Json压缩工具
  14. Hass.io: add-on Configurator
  15. VS工作目录,输出目录
  16. Android Shell命令dumpsys
  17. 2017 jq 总结
  18. Spring注解运行时抛出null
  19. Cppcheck代码分析上
  20. HTML 中框架、层的运用

热门文章

  1. 【python】使用asyncore进行异步通信
  2. linux中的阻塞机制及等待队列
  3. Matisse,来自知乎的PhotoPicker
  4. mac 开启SSH服务
  5. ubuntu 上的ruby安装
  6. 用ofstream/ifstream 读写Unicod的TXT
  7. 重温CLR(四)基元类型、引用类型、值类型
  8. 【LeetCode】汇总
  9. 1021. Deepest Root (25)——DFS+并查集
  10. java图形用户界面练习。j2se