HTML5技术

canvas仿黑客帝国的字符下落 - 一支小白

字号+ 作者:H5之家 来源:H5之家 2015-12-06 16:39 我要评论( )

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 !DOCTYPEhtml htmllang="en" head metacharset="UT

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>

<div style="color:red;text-align: center;font-size: 20px;">二进制雨</div>

<canvas id="myCanvas" width="1000px" height="600px" 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>

    

 

这是以前的博客 效果还行吧。手机看不了 看了也卡。。。。

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • canvas知识点 - H.U.C-王子

    canvas知识点 - H.U.C-王子

    2017-04-16 10:02

  • canvas实现黑客帝国矩形阵 - 风雨后见彩虹

    canvas实现黑客帝国矩形阵 - 风雨后见彩虹

    2017-03-30 09:00

  • canvas画直角坐标系 - shbwh-tswq

    canvas画直角坐标系 - shbwh-tswq

    2017-03-18 10:02

  • 列表总结Canvas和SVG的区别 - 妙音天女

    列表总结Canvas和SVG的区别 - 妙音天女

    2017-03-17 10:00

网友点评
r