Physics2DPlugin3+gsap实现canvas画布点击扩散动画效果代码

代码语言:html

所属分类:动画

代码描述:Physics2DPlugin3+gsap实现canvas画布点击扩散动画效果代码

代码标签: Physics2DPlugin gsap canvas 画布 点击 扩散 动画

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

<!DOCTYPE html>
<html lang="en" >

<head>
 
<meta charset="UTF-8">
 

 
 
<style>
body
{
 
background-color: #000;
 
display: flex;
 
align-items: center;
 
justify-content: center;      
       
overflow: hidden;
}

canvas
{
       
min-height: 100vh;
}
</style>


 
</head>

<body translate="no">
 
<canvas id="canvas"></canvas>
<script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/gsap.3.12.2.js"></script>
<script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/Physics2DPlugin3.min.js"></script>
     
<script >
gsap.config({trialWarn: false});
console.clear()
let select = s => document.querySelector(s),
                canvas = select('#canvas'),
                ctx = canvas.getContext('2d'),
                particles = [],
                sizeObj = {width: window.innerWidth,
                                                         height: window.innerHeight
                                                        },
                particleArray = [],
                bigCircleArray = [],
                smallCircleArray = [],
                colorArray = ["fec10e","fe744d","cc9edc","ff4b10","019bd9","a1e8af","979797","83c9f4","5c374c","302f4d"],
                mousePos = {
                        x: sizeObj.width/2,
                        y: sizeObj.height/2
                },
                particleArea = Math.min(sizeObj.width, sizeObj.height) * 0.2,
                numParticles = 66,
                step = 360/numParticles,
                clickCount = -1,
                oldColor = null,
                currentColor = null

colorArray = colorArray.map(x => Array.from(x)[0] == '#' ? x : `#${x}`);

class Particle {
  constructor(x, y, radius, color, scale, rotation, origin, opacity, duration) {                
        this.x = x;
        this.y = y;
        this.radius = radius;
        this.color = color;
        this.scale = scale;
        this.rotation = rotation;
        this.origin = origin;
        this.opacity = opacity;
        this.duration = duration;
    }  
}

function bigCircleDuration () {
        let mapDuration, duration = 4;
/*      if(mousePos.x < sizeObj.width * 0.3) {
                duration = gsap.utils.mapRange(0, sizeObj.width * 0.3, 1.5, 4, mousePos.x)
        } else if(mousePos.x > sizeObj.width * 0.6) {
                duration = gsap.utils.mapRange(sizeObj.width * 0.6, sizeObj.width, 140, 1.5, mousePos.x)
        } */
        return duration;
}

function removeParticle(particl.........完整代码请登录后点击上方下载按钮下载查看

网友评论0