Pular para o conteúdo principal

Tutorial: Fogos de Artifício Animados para o Ano Novo

Feliz Ano Novo com Fogos de Artifício


Neste tutorial, você aprenderá a criar um projeto em HTML e JavaScript para celebrar o Ano Novo. O projeto inclui animações de fogos de artifício, mensagens animadas e áudio sincronizado para uma experiência completa.

Veja o projeto ao vivo neste link. Happy New Year with Fireworks.

Veja o vídeo no YouTube:

O que você vai criar?

  • Animação de mensagens festivas como "FELIZ", "ANO", "NOVO", "2025".
  • Fogos de artifício coloridos no fundo.
  • Áudio de fogos para completar a celebração.
  • Um design responsivo que funciona em dispositivos móveis e desktops.

Pré-requisitos

Antes de começar, você precisará de:

  1. Um editor de texto ou IDE (como Visual Studio Code, Sublime Text ou outro de sua escolha).

  2. Um navegador moderno (Google Chrome, Firefox, Edge, etc.).

  3. Conhecimentos básicos de HTML e JavaScript.

  4. Um arquivo de áudio de fogos de artifício em formato .mp3.

Estrutura do Projeto

O projeto terá os seguintes arquivos:

Feliz-Ano-Novo/
├── index.html       # Estrutura da página
├── script.js        # Código de animação e lógica
├── fireworks.mp3    # Áudio de fogos de artifício

Passo a Passo

1. Criando o arquivo index.html

Crie o arquivo index.html com a seguinte estrutura:



<!DOCTYPE html>

<html lang="pt-br">

<head>

    <meta charset="UTF-8">

    <meta http-equiv="X-UA-Compatible" content="IE=edge">

    <meta name="viewport" content="width=device-width, initial-scale=1">

    <title>Feliz Ano Novo com Fogos de Artifício</title>

</head>

<body>

    <button id="play-audio" style="position: absolute; z-index: 10; top: 20px; left: 20px; padding: 10px; font-size: 16px;">Iniciar Fogos</button>

    <script src="script.js"></script>

</body>

</html>

Este arquivo cria a estrutura principal da página e um botão para iniciar o áudio.

2. Criando o arquivo script.js

Agora crie o arquivo script.js, que será responsável por:

  • Exibir as mensagens animadas.
  • Criar a animação dos fogos de artifício.
  • Reproduzir o som dos fogos.

Aqui está o código completo do script.js:



let chars, particles, canvas, ctx, w, h, current;

let duration = 5000;

let str = ['FELIZ', 'ANO', 'NOVO', '2025'];

let audio; // Variável para o áudio

init();

resize();

requestAnimationFrame(render);

addEventListener('resize', resize);

function makeChar(c) {

    let tmp = document.createElement('canvas');

    let size = tmp.width = tmp.height = w < 400 ? 200 : 300;

    let tmpCtx = tmp.getContext('2d');

    tmpCtx.font = 'bold ' + size + 'px Arial';

    tmpCtx.fillStyle = 'white';

    tmpCtx.textBaseline = "middle";

    tmpCtx.textAlign = "center";

    tmpCtx.fillText(c, size / 2, size / 2);

    let char2 = tmpCtx.getImageData(0, 0, size, size);

    let char2particles = [];

    for (var i = 0; char2particles.length < particles; i++) {

        let x = size * Math.random();

        let y = size * Math.random();

        let offset = parseInt(y) * size * 4 + parseInt(x) * 4;

        if (char2.data[offset])

            char2particles.push([x - size / 2, y - size / 2]);

    }

    return char2particles;

}

function init() {

    canvas = document.createElement('canvas');

    document.body.append(canvas);

    document.body.style.margin = 0;

    document.body.style.overflow = 'hidden';

    document.body.style.background = 'black';

    ctx = canvas.getContext('2d');

    // Configurar o áudio

    audio = new Audio('fireworks.mp3'); // Certifique-se de ter o arquivo "fireworks.mp3" no mesmo diretório

    audio.loop = true; // Repetir áudio

    audio.volume = 0.5;

    // Adicionar evento ao botão para iniciar o áudio

    const playButton = document.getElementById('play-audio');

    playButton.addEventListener('click', () => {

        audio.play();

        playButton.style.display = 'none'; // Esconder o botão após o clique

    });

}

function resize() {

    w = canvas.width = innerWidth;

    h = canvas.height = innerHeight;

    particles = innerWidth < 400 ? 55 : 99;

}

function makeChars(t) {

    let actual = parseInt(t / duration) % str.length;

    if (current === actual)

        return;

    current = actual;

    chars = [...str[actual]].map(makeChar);

}

function render(t) {

    makeChars(t);

    requestAnimationFrame(render);

    ctx.fillStyle = '#00000010';

    ctx.fillRect(0, 0, w, h);

    chars.forEach((pts, i) => firework(t, i, pts));

}

function firework(t, i, pts) {

    t -= i * 200;

    let id = i + chars.length * parseInt(t - t % duration);

    t = t % duration / duration;

    let dx = (i + 1) * w / (1 + chars.length);

    dx += Math.min(0.33, t) * 100 * Math.sin(id);

    let dy = h * 0.5;

    dy += Math.sin(id * 4547.411) * h * 0.1;

    if (t < 0.33) {

        rocket(dx, dy, id, t * 3);

    } else {

        explosion(pts, dx, dy, id, Math.min(1, Math.max(0, t - 0.33) * 2));

    }

}

function rocket(x, y, id, t) {

    ctx.fillStyle = 'white';

    let r = 2 - 2 * t + Math.pow(t, 15 * t) * 16;

    y = h - y * t;

    circle(x, y, r);

}

function explosion(pts, x, y, id, t) {

    let dy = (t * t * t) * 20;

    let r = Math.sin(id) * 1 + 3;

    r = t < 0.5 ? (t + 0.5) * t * r : r - t * r;

    ctx.fillStyle = `hsl(${id * 55}, 55%, 55%)`;

    pts.forEach((xy, i) => {

        if (i % 20 === 0)

            ctx.fillStyle = `hsl(${id * 55}, 55%, ${55 + t * Math.sin(t * 55 + i) * 45}%)`;

        circle(t * xy[0] + x, h - y + t * xy[1] + dy, r);

    });

}

function circle(x, y, r) {

    ctx.beginPath();

    ctx.ellipse(x, y, r, r, 0, 0, 6.283);

    ctx.fill();

}

        

3. Adicionando o áudio

Coloque um arquivo de som chamado fireworks.mp3 na mesma pasta dos seus arquivos. Você pode baixar sons gratuitos de fogos de artifício no Freesound ou em outros bancos de som.

4. Testando o projeto

Abra o arquivo index.html no navegador. Você verá:

  1. Mensagens animadas na tela ("FELIZ", "ANO", "NOVO", "2025").

  2. Fogos de artifício coloridos.

  3. Um botão no canto superior esquerdo para ativar o som.

Personalização

  • Mensagens: Edite o array str no script.js para alterar os textos animados.
  • Cores: Modifique as cores no método explosion() no script.js.
  • Som: Substitua o arquivo fireworks.mp3 por outro de sua escolha.

Se preferir,  os códigos estão no meu Repositório no GitHub

Conclusão

Parabéns! Você criou um projeto interativo para celebrar o Ano Novo. Este projeto é uma ótima introdução ao uso criativo de HTML5 Canvas e áudio com JavaScript.

🎉 Feliz Ano Novo e boas programações! 🎇

Comentários

Mais vistas

Autocode - Significado e Funcionalidade

O Que é Autocode? O Autocode foi uma das primeiras linguagens de programação de computador, desenvolvida em 1952 por Alick Glennie para o computador Mark 1 na Universidade

Semáforo - HTML, CSS e JavaScript - Tutorial

Semáforo Funcional: Aprenda a criar um semáforo funcional com este tutorial detalhado. Descubra como implementar a lógica de controle de um semáforo usando HTML, CSS e JavaScript.

Animação Roleta de Prêmios - HTML, CSS e JavaScript - Tutorial

Animação Roleta de Prêmios: Descubra como criar uma animada roleta de prêmios com este tutorial detalhado. Este projeto consiste em uma Animação,  uma roleta