黑客帝国矩阵动画效果

代码语言:html

所属分类:视觉差异

下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开

<!DOCTYPE html>
<html lang="en">
<head>
   
<meta charset="UTF-8">

   
<title>  Arrowtrix (Matrix Arrows)</title>
   
<style>
        body
{
           
background: #020;
           
margin: 0;
           
padding: 0
       
}
        canvas
{
           
background: #000;
       
}
   
</style>

</head>
<body onresize='_pexresize()'>
   
<canvas id='canvas' width="1280" height="720"></canvas>

   
<script>
        "use strict";
        var stage = {
            w: 1280,
            h: 720
        };


        var _pexcanvas = document.getElementById("canvas");
        _pexcanvas.width = stage.w;
        _pexcanvas.height = stage.h;
        var ctx = _pexcanvas.getContext("2d");




        var pointer = {
            x: 0,
            y: 0
        };


        var scale = 1;
        var portrait = true;
        var loffset = 0;
        var toffset = 0;
        var mxpos = 0;
        var mypos = 0;


        // ------------------------------------------------------------------------------- Gamy

        function drawArrow(fromx, fromy, tox, toy, lw, hlen, color) {
            var dx = tox - fromx;
            var dy = toy - fromy;
            var angle = Math.atan2(dy, dx);
            ctx.fillStyle = color;
            ctx.strokeStyle = color;
            ctx.lineCap = "round";
            ctx.lineWidth = lw;
            ctx.beginPath();
            ctx.moveTo(fromx, fromy);
            ctx.lineTo(tox, toy);
            ctx.stroke();
            ctx.beginPath();
            ctx.moveTo(tox, toy);
            ctx.lineTo(tox - hlen * Math.cos(angle - Math.PI / 6), toy - hlen * Math.sin(angle - Math.PI / 6));
            ctx.lineTo(tox - hlen * Math.cos(angle) / 2, toy - hlen * Math.sin(angle) / 2);
            ctx.lineTo(tox - hlen * Math.cos(angle + Math.PI / 6), toy - hlen * Math.sin(angle + Math.PI / 6));
            ctx.closePath();
            ctx.stroke();
            ctx.fill();
        }




        var arrows = [];
        function Arrow() {
            this.x = Math.floor(Math.random() * stage.w);
            this.y = Math.floor(Math.random() * stage.h) - stage.h;
            this.s = Math.floor(Math.random() * 40) + 10;
        }

        for (var i = 0; i < 150; i++) {
            arrows[i] = new Arrow();
        }
        var skip = 0;
        function enginestep() {
            ctx.fillStyle = "rgba(0,0,0,0.05)";
            ctx.fillRect(0, 0, stage.w, stage.h);
            skip++;
            if (skip > 3) {



                for (var i = 0; i < arrows.length; i++) {
            .........完整代码请登录后点击上方下载按钮下载查看

网友评论0