当前位置:网站首页>Continuous attack animation

Continuous attack animation

2022-06-21 14:28:00 Advanced mathematics volume II half price

Today, let's write a fun , Continuous attack animation using higher-order functions

Pictured

Click on 10 Time , stop , The attack will continue on its own

Let's take a look at how it is implemented

html part :

<div id="main">
    <button id="btn">Hit</button>
    <span id="count">+0</span>
</div>

css part :

#main {
  padding-top: 20px;
  font-size: 26px;
}

#btn {
  font-size: 30px;
  border-radius: 15px;
  border: solid 3px #fa0;
}

#count {
  position: absolute;
  margin-left: 6px;
  opacity: 1.0;
  transform: translate(0, 10px);
}

#count.hit {
  opacity: 0.1;
  transform: translate(0, -20px);
  transition: all .5s;
}

When you click hit when ,count Set a small animation , Move up and transparency

Javascript part :

function consumer(fn, time){
  let tasks = [],
      timer;
  
  return function(...args){
    tasks.push(fn.bind(this, ...args));
    if(timer == null){
      timer = setInterval(() => {
        tasks.shift().call(this)
        if(tasks.length <= 0){
          clearInterval(timer);
          timer = null;
        }
      }, time)
    }
  }
}

btn.onclick = consumer((evt)=>{
  let t = parseInt(count.innerHTML.slice(1)) + 1;
  count.innerHTML = `+${t}`;
  count.className = 'hit';
  let r = t * 7 % 256,
      g = t * 17 % 128,
      b = t * 31 % 128;
  
  count.style.color = `rgb(${r},${g},${b})`.trim();
  setTimeout(()=>{
    count.className = 'hide';
  }, 500);
}, 800)

原网站

版权声明
本文为[Advanced mathematics volume II half price]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/02/202202221424598267.html