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

"Loading" na Preview após implementar o som

Boa noite, pessoal.

Após fazer o upload dos arquivos de som e implementar o código, assim que eu dou "Play" no jogo fica um "Loading..." na Preview, de forma que o jogo não funciona mais.

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Segue o meu código inteiro:

let xBolinha = 300;
let yBolinha = 200;
let diametro = 15;
let raio = diametro/2

let velocidadeXBolinha = 6;
let velocidadeYBolinha = 6;

let xRaquete = 5;
let yRaquete = 150;
let larguraRaquete = 10;
let alturaRaquete = 90;

let xRaqueteOponente = 585;
let yRaqueteOponente = 150;
let velocidadeYOponente;

let meusPontos = 0;
let pontosDoOponente = 0;

let raquetadaSom;
let pontoSom;
let trilhaSom;

function preload() {
  trilhaSom = loadSound("trilha.mp3");
  pontoSom = loadSound("ponto.mp3");
  raquetadaSom = loadSound("raquetada.mp3");
}

function setup() {
  createCanvas(600, 400);
  trilhaSom.loop();
}

function draw() {
  background(0);
  mostraBolinha();
  movimentaBolinha();
  verificaColisaoBorda();
  mostraRaquete(xRaquete,yRaquete);
  movimentaMinhaRaquete();
  verificaColisaoRaquete();
  mostraRaquete(xRaqueteOponente,yRaqueteOponente);
  movimentaRaqueteOponente();
  verificaColisaoRaqueteOponente();
  incluiPlacar();
  marcaPonto();
}

function mostraBolinha() {
    circle(xBolinha, yBolinha, diametro);
}

function movimentaBolinha() {
  xBolinha += velocidadeXBolinha;
  yBolinha += velocidadeYBolinha;
}

function verificaColisaoBorda () {
  if (xBolinha + raio> width || xBolinha - raio< 0) {
    velocidadeXBolinha *= -1;
  }

  if (yBolinha + raio> height || yBolinha - raio< 0) {
    velocidadeYBolinha *= -1;
  }
}

function mostraRaquete(x,y) {
    rect(x,y,larguraRaquete,alturaRaquete);
}

function movimentaMinhaRaquete() {
  if (keyIsDown(UP_ARROW)) {
    yRaquete -= 10;
  }
  if (keyIsDown(DOWN_ARROW)) {
    yRaquete += 10;
  }
}

function movimentaRaqueteOponente() {
  velocidadeYOponente = yBolinha - yRaqueteOponente - alturaRaquete/2 - 50;
  yRaqueteOponente += velocidadeYOponente;
}

function verificaColisaoRaquete() {
  if (xBolinha - raio< xRaquete + larguraRaquete && yBolinha - raio < yRaquete + alturaRaquete && yBolinha + raio > yRaquete) {
    velocidadeXBolinha *= -1;
    raquetadaSom.play();
  }
}

function verificaColisaoRaqueteOponente() {
  if (xBolinha + raio> xRaqueteOponente + larguraRaquete/2 && yBolinha - raio < yRaqueteOponente + alturaRaquete && yBolinha + raio > yRaqueteOponente) {
    velocidadeXBolinha *= -1;
    raquetadaSom.play();
  }
}

function incluiPlacar () {
  stroke(255);
  textSize(16);
  textAlign(CENTER);
  fill(color(255,140,0));
  rect(150,20,40,20);
  fill(255);
  text(meusPontos,170,35);
  fill(color(255,140,0));
  rect(450,20,40,20);
  fill(255);
  text(pontosDoOponente,470,35);
}

function marcaPonto() {
  if (xBolinha > 590) {
    meusPontos += 1;
    pontoSom.play();
  }
  if (xBolinha < 10) {
    pontosDoOponente += 1;
    pontoSom.play();
  }
}

Estava tudo funcionando direitinho antes de eu tentar implementar o som. Alguém passou por isso também?

2 respostas
solução!

Oi, Lara! Tudo bem com você?

A preload() funciona para fazer o pré-carregamento dos arquivos e esse problema indica que o p5.js está tentando carregar os arquivos. Testei seu código no meu p5.js e está funcionando perfeitamente. Dessa forma, é possível que esse problema de Loading esteja ocorrendo por conta da localização em que os arquivos estão no seu projeto.

Se você criou uma pasta diferente para inserir os arquivos, lembre-se que você precisa referenciá-la no caminho da função preload(), pois as pastas possuem uma hierarquia e se o caminho não for passado corretamente o p5.js não irá encontrá-los.

Verifique se os arquivos de som estão na pasta raiz como na imagem abaixo:

Imagem mostra arquivos todos na pasta raiz do projeto do p5.js

Fico no aguardo!

Um abraço e bons estudos!

Bom dia, Camila!

No projeto, ele estava igual na imagem que você mostrou, mas eu organizei melhor aqui as pastas em que os arquivos estavam no meu computador, e deu certo hehe

Obrigada! =)