Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Decidi separar os sons do jogo das imagens criando um arquivo .js próprio para os sons mas não deu certo

Olá,

Separei os sons e as imagens criando um arquivo sons.js e utilizando os mesmos códigos mostrados na aula mas o jogo não consegue carregar a imagem agora. Veja: https://editor.p5js.org/alecwatanabe/sketches/RhxfYiXRY

Alguém pode me explicar o que está ocorrendo? A function preload() não pode ser usado 2 vezes?

Obrigado.

2 respostas
solução!

Olá, tudo bem?

Eu também estava tendo este mesmo problema. Acredito que o problema era que estávamos dando o mesmo nome para duas funções diferentes. Onde, usamos o nome 'preload' para a função que trazia as imagens, e também de 'preload' a função que carrega os sons.

Uma alternativa que eu consegui, para fazer rodar, foi de separar tudo em três arquivos .js diferentes. Um para as imagens, um para os sons e outro para o carregamento desses arquivos.

Aí em cada um deles eu criei uma função para compilar as informações, pra em seguida eu carregar elas dentro da função 'preload'.

Ficou mais ou menos assim: No arquivo de Imagens.js

// Imagens do Jogo 
let imagemDaEstrada;
let imagemDoAtor;
let imagemCarro;
let imagemCarro2;
let imagemCarro3;

function chamaImagens(){
  imagemDaEstrada = loadImage('Imagens/estrada.png');
  imagemDoAtor = loadImage('Imagens/ator-1.png');
  imagemCarro = loadImage('Imagens/carro-1.png');
  imagemCarro2 = loadImage('Imagens/carro-2.png');
  imagemCarro3 = loadImage('Imagens/carro-3.png');
  imagemCarros = [imagemCarro, imagemCarro2, imagemCarro3, imagemCarro1, imagemCarro2, imagemCarro3]
  }

Agora no arquivo de Sons.js

// Sons do Jogo
let somDaTrilha;
let somDaColisao;
let somDoPonto;

function chamaSons(){
  somDaTrilha = loadSound('Sons/trilha.mp3');
  somDaColisao = loadSound('Sons/colidiu.mp3');
  somDoPonto = loadSound('Sons/pontos.wav');
}

Aí, depois de tudo, eu usei a função 'preload' pra carregar tudo junto, dentro do arquivo Preload.js:

// Carrega arquivos
function preload(){
  chamaImagens();
  chamaSons();
}

Depois que eu fiz isso, funcionou :D

Espero ter ajudado

Abraço

Olá Rodrigo, beleza?

Aaaah, agora tudo faz sentido...

Obrigado.