js实现canvas鼠标撩动垂柳自然摆动动画效果代码

代码语言:html

所属分类:动画

代码描述:js实现canvas鼠标撩动垂柳自然摆动动画效果代码

代码标签: 鼠标 撩动 垂柳 自然 摆动 动画 效果

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

<html>
<head>
   
<style>
        html
,
        body
{
           
margin: 0;
           
padding: 0;
           
height: 100%;
       
}
        body
{
           
user-select: none;
           
background-color: #000;
           
display: flex;
           
align-items: center;
           
justify-content: center;
           
overflow: hidden;
       
}
        canvas
{
           
flex-shrink: 0;
           
background-color: #222;
           
image-rendering: -moz-crisp-edges;
           
image-rendering: -webkit-crisp-edges;
           
image-rendering: pixelated;
           
object-fit: contain;
       
}

       
#message {
           
color: white;
           
font-family: sans-serif;
           
position: absolute;
           
left: 50%;
           
top: 40%;
           
transform: translate(-50%,-50%);
           
text-align: center;
       
}
        h1
,h4 {
           
margin: 0;
       
}
        h1
{
           
font-size: 10vmin;
       
}

        h4
{
           
font-size: 4vmin;
       
}
   
</style>
 
</head>
<body>
   
<div></div>
   
<script>
        function lerpColor(a, b, amount) {
            var ah = parseInt(a.replace(/#/g, ""), 16),
            ar = ah >> 16,
            ag = (ah >> 8) & 0xff,
            ab = ah & 0xff,
            bh = parseInt(b.replace(/#/g, ""), 16),
            br = bh >> 16,
            bg = (bh >> 8) & 0xff,
            bb = bh & 0xff,
            rr = ar + amount * (br - ar),
            rg = ag + amount * (bg - ag),
            rb = ab + amount * (bb - ab);

            return (
                "#" + (((1 << 24) + (rr << 16) + (rg << 8) + rb) | 0).toString(16).slice(1)
            );
        }

        const PI = Math.PI,
        TWO_PI = Math.PI * 2;

        const Util = {};
        Util.timeStamp = function() {
            return window.performance.now();
        };
        Util.random = function(min, max) {
            return min + Math.random() * (max - min);
        };
        Util.map = function(a, b, c, d, e) {
            return (a - b) / (c - b) * (e - d) + d;
        };
        Util.lerp = function(value1, value2, amount) {
            return value1 + (value2 - value1) * amount;
        };
        Util.clamp = function(value, min, max) {
            return Math.max(min, Math.min(max, value));
        };

        const Tween = {};
        Tween.linear = function(currentTime, start, degreeOfChange, duration) {
            return degreeOfChange * currentTime / duration + start;
        };
        Tween.easeInOutQuad = function(t, b, c, d) {
            t /= d / 2;
            if (t < 1) return c / 2 * t * t + b;
            t--;
            return -c / 2 * (t * (t - 2) - 1).........完整代码请登录后点击上方下载按钮下载查看

网友评论0