Add colored hearts/float, gamepad/press, headphones/bop, camera/flash, phone/ring, trophy/shine, dice/roll, magnet/pull, brush/paint, battery/charge

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-22 20:56:04 +00:00
co-authored by Claude Opus 5.5
parent d067f0b6bb
commit baa59314d3
30 changed files with 211 additions and 0 deletions
+14
View File
@@ -0,0 +1,14 @@
// hearts of different colors floating up and swaying, swelling in and shrinking away as they rise
const{sin,cos,PI}=Math,T=2*PI
export const frames=24,delay=70
const H=[[60,0,'#ff6b6b',34],[128,.5,'#f783ac',44],[196,.25,'#b197fc',30],[96,.75,'#ffa94d',24],[168,.85,'#ff8787',26],[40,.4,'#faa2c1',22]]
export default(c,t)=>{
for(const[x0,o,col,r]of H){
const p=(t+o)%1,s=r*sin(PI*p)/22,x=x0+14*sin(p*T+o*9),y=236-p*210
if(s<.15)continue
c.save();c.translate(x,y);c.rotate(.25*sin(p*T*2+o*5));c.scale(s,s)
c.beginPath();c.moveTo(0,16);c.bezierCurveTo(-26,-2,-18,-24,0,-11);c.bezierCurveTo(18,-24,26,-2,0,16);c.restore()
c.fillStyle=col;c.lineWidth=Math.min(7,3+s*2);c.fill();c.stroke()
c.fillStyle='#fff';c.beginPath();c.ellipse(x-8*s,y-8*s,3.5*s,2*s,-.6,0,T);c.fill()
}
}