Explosion Animation in Canvas

In this article, we will create an explosion animation using canvas in HTML.
Approach: At first, we have to create a canvas element in HTML and get its reference in JavaScript. All the elements and animations are controlled using JavaScript functions. Some steps required are:
- Use the canvas methods to get the canvas and the context.
- Decide the color, pattern, and gradient for text and particle objects.
- Decide and draw the shape for animation or frame rendering
- Clear the previous canvas.
- Save the canvas after transformations for the original state
- Restore the canvas before drawing a new frame
 We can create many particles and animate them in random directions which fades out after some time.
Example:
HTML
| <!DOCTYPE html> <html> <head>     <title>Explosion Animation</title> </head>  <body>     <canvasid="myCanvas"></canvas> </body> </html> | 
CSS
| <style>     * {             padding: 0;             margin: 0;             box-sizing: border-box;                   ;        }          body {               overflow: hidden;           } </style> | 
Javascript
| <script>     /* Get the canvas  */    varcanvas = document.getElementById("myCanvas");          /* Get the height and width of the window */    canvas.height = window.innerHeight;     canvas.width = window.innerWidth;          /* Get the 2D context of the canvas  */    varctx = canvas.getContext("2d");          /* Fills or sets the color,gradient,pattern */    ctx.fillStyle = "white";     ctx.fillRect(0, 0, canvas.width, canvas.height);     ctx.font = "50px Arial";     ctx.fillStyle = "green";          /* Writes the required text  */    ctx.fillText("GFG", 500, 350)     let particles = [];          /* Initialize particle object  */    class Particle {         constructor(x, y, radius, dx, dy) {             this.x = x;             this.y = y;             this.radius = radius;             this.dx = dx;             this.dy = dy;             this.alpha = 1;         }         draw() {             ctx.save();             ctx.globalAlpha = this.alpha;             ctx.fillStyle = 'green';                          /* Begins or reset the path for                 the arc created */            ctx.beginPath();                          /* Some curve is created*/            ctx.arc(this.x, this.y, this.radius,                      0, Math.PI * 2, false);                  ctx.fill();                          /* Restore the recent canvas context*/            ctx.restore();         }         update() {             this.draw();             this.alpha -= 0.01;             this.x += this.dx;             this.y += this.dy;         }     }          /* Timer is set for particle push          execution in intervals*/    setTimeout(() => {         for(i = 0; i <= 150; i++) {             let dx = (Math.random() - 0.5) * (Math.random() * 6);             let dy = (Math.random() - 0.5) * (Math.random() * 6);             let radius = Math.random() * 3;             let particle = newParticle(575, 375, radius, dx, dy);                          /* Adds new items like particle*/            particles.push(particle);         }         explode();     }, 3000);          /* Particle explosion function */    functionexplode() {              /* Clears the given pixels in the rectangle */        ctx.clearRect(0, 0, canvas.width, canvas.height);         ctx.fillStyle = "white";         ctx.fillRect(0, 0, canvas.width, canvas.height);         particles.forEach((particle, i) => {                 if(particle.alpha <= 0) {                     particles.splice(i, 1);                 } elseparticle.update()             })                          /* Performs a animation after request*/        requestAnimationFrame(explode);     } </script> | 
Output:
 
Explosion Animation
Whether you’re preparing for your first job interview or aiming to upskill in this ever-evolving tech landscape, zambiatek Courses are your key to success. We provide top-quality content at affordable prices, all geared towards accelerating your growth in a time-bound manner. Join the millions we’ve already empowered, and we’re here to do the same for you. Don’t miss out – check it out now!
 
				 
					


