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

Erro: Uncaught ReferenceError: imagemCarros is not defined (carro: line 9)

Pessoal, esse é meu código no Sketch.js:

function preload() {
  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];
}

function setup() {
  createCanvas(500, 400);
}

function draw() {
  background(imagemDaEstrada);
  mostraAtor();
  mostraCarro();
  movimentaCarro();
  movimentaAtor();
  voltaPosicaoInicialDoCarro();
}

E esse é meu código no carro.js:

//código do carro

let xCarros = [600, 600, 600]
let yCarros = [40, 96, 150];
let velocidadeCarros = [2, 3.2, 2.5];


function mostraCarro() {
  image(imagemCarros[0], xCarros[0], yCarros[0], 50, 40);
  image(imagemCarros[1], xCarros[1], yCarros[1], 50, 40);
  image(imagemCarros[2], xCarros[2], yCarros[2], 50, 40);
}

function movimentaCarro() {
  xCarros[0] = xCarros[0] - velocidadeCarros[0];
  xCarros[1] = xCarros[1] - velocidadeCarros[1];
  xCarros[2] = xCarros[2] - velocidadeCarros[2];
  }

function voltaPosicaoInicialDoCarro() {
  if (xCarros[0] < -50) {
    xCarros[0] = 600;
  }
  if (xCarros[1] < -50) {
    xCarros[1] = 600;
  }
  if (xCarros[2] < -50) {
    xCarros[2] = 600;
  }

}

Só que, quando executo meu programa, me aparece no console esse erro dentro do código carro.js:

Uncaught ReferenceError: imagemCarros is not defined (carro: line 9)

Porém a linha 9 está do jeito que o exemplo (e o exercício do professor). Alguém poderia me dizer onde está o erro? Muito obrigado desde já.

Carlos Ferrer

3 respostas

Acho que a variável está errada. Você está usando a variável imagemCarros na linha 9, mas foi declarada como imagemCarro no preload. Repare no S no final.

Você criou o file imagens.js? Testei teu código aqui e estava funcionando.

Assim é meu código no imagens.js

let imagemDaEstrada;
let imagemDoAtor;
let imagemCarro1;
let imagemCarro2;
let imagemCarro3;

function preload(){
  imagemDaEstrada = loadImage("imagens/estrada.png");
  imagemDoAtor = loadImage("imagens/ator-1.png");
  imagemCarro1 = loadImage("imagens/carro-1.png");
  imagemCarro2 = loadImage("imagens/carro-2.png");
  imagemCarro3 = loadImage("imagens/carro-3.png");
  imagemCarros = [imagemCarro1,imagemCarro2,imagemCarro3];
  }

sketch.js


function setup() {
  createCanvas(500, 400);
}

function draw() {
  background(imagemDaEstrada);
  mostraAtor();
  mostraCarros();
  movimentaCarros(); 
  movimentaAtor();
  voltaPosicaoInicialDoCarro()
}  

atores.js

//variaveis dos atores
let xAtor = 250;
let yAtor = 369;

function mostraAtor(){
  image(imagemDoAtor, xAtor, yAtor ,30,30);;
}

function movimentaAtor(){
    if (keyIsDown(UP_ARROW)){
    yAtor -= 3;
  }
  if (keyIsDown(DOWN_ARROW)){
    yAtor += 3;
  }
}

carros.js

//variaveis carros
let yCarros = [47,103,153];
let velocidadeCarros = [2, 2.5 , 3.2 ];
let xCarros = [600,600,600];

//carro1 - verde
let xCarro1 = 450;

//carro2 - preto
let xCarro2 = 450;

//carro3 - amarelo
let xCarro3 = 450;


function mostraCarros(){
  for (let i = 0; i < imagemCarros.length; i = i + 1){
    image(imagemCarros[i], xCarros[i], yCarros[i],50,30);          
  } 
}

function movimentaCarros(){
   xCarros[0] -= velocidadeCarros[0];
   xCarros[1] -= velocidadeCarros[1];
   xCarros[2] -= velocidadeCarros[2];
 }

function voltaPosicaoInicialDoCarro(){
  if (xCarros[0] < -50){
    xCarros[0] = 600;
  }
  if (xCarros[1] < -50){
    xCarros[1] = 600;
  }
  if (xCarros[2] < -50){
    xCarros[2] = 600;
  }
}
solução!

Obrigado pela ajuda, pessoal. O que estava faltando justamente era declarar a string com as imagens do carro no preload(), dentro do arquivo imagens.js

function preload(){
  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]