canvas光影喷射回弹动画效果

代码语言:html

所属分类:动画

代码描述:canvas光影喷射回弹动画效果

代码标签: 回弹 动画 效果

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

<!DOCTYPE html>
<html>
<head>

   
<style type="text/css">
        canvas
{
           
position: absolute;
           
height: 100%;
           
width: 100%;
           
left: 0;
           
top: 0;
           
cursor: crosshair;
           
background-color: Blue;
       
}
   
</style>
</head>
<body>
   
<canvas></canvas>
   
<script type="text/javascript">
        bgColor = '#000'; gravity = 0.5; particleColor = '#279'; canvas = document.querySelector('canvas'); ctx = canvas.getContext('2d'); (onresize = function() {
            width = canvas.width = canvas.clientWidth; height = canvas.height = canvas.clientHeight; o = {
                x: Math.floor(width/2), y: Math.floor(height/2)}; edge = {
                top: -o.y, right: width-o.x, bottom: height-o.y, left: -o.x
            }})(); particles = {}; newParticle = (function() {
            var nextIndex = 0; return function(x, y, r, o, c, xv, yv, rv, ov) {
                particles[++nextIndex] = {
                    index: nextIndex, x: x, y: y, r: r, o: o, c: c, xv: xv, yv: yv, rv: rv, ov: ov
                };
            };
        })(); fireballs = {}; newFireball = (function() {
            var nextIndex = 0; return function(x, y, xv, yv, life) {
                fireballs[++nextIndex] = {
                    index: nextIndex, x: x, y: y, xv: xv, yv: yv, life: life
                };
            };
        })(); mouse = {
            x: 0,
            y: 0,
            d: 0
        }; onmousemove = function(e) {
            mouse.x = e.clientX-o.x; mouse.y = e.clientY-o.y; var dx = mouse.x-pos1.x,
            dy = mouse.y-pos1.y; mouse.d = Math.sqrt(dx*dx+dy*dy);
        }; charging = false; pos1 = {
            x: 0,
            y: 0
        }; showInstructions = true; onmousedown = function(e) {
            pos1.x = mouse.x; pos1.y = mouse.y; charging = true; showInstructions = false;
        }; onmouseup = function() {
            if (charging) {
                newFireball(mouse.x, mouse.y, (pos1.x-mouse.x)*0.03, (pos1.y-mouse.y)*0.03, 600); charging = false;
            }}; time = 0; requestAnimationFrame(loop = function() {
                ctx.setTransform(1, 0, 0, 1, 0, 0); ctx.glo.........完整代码请登录后点击上方下载按钮下载查看

网友评论0