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

[Bug] "width" is not defined in the current scope.

Olá, preciso de uma ajudinha aqui. Estou com erro no código, na console informa:"width" is not defined in the current scope. If you have defined it in your code, you should check its scope, spelling, and letter-casing (JavaScript is case-sensitive). Na vídeo aula informa que essa variável já está definida por padrão no p5.js. Se for necessário criar a variável, como encontro qual a largura ?

cod:

let xBolinha = 300;
let yBolinha = 200;
let diametro = 15;

let velocidadexBolinha = 6;
let velocidadeyBolinha = 6;

function setup() {
  createCanvas(600, 400);
}
//
function draw() {
  background(0);
  circle(xBolinha, yBolinha, diametro)
  xBolinha += velocidadexBolinha;
  yBolinha += velocidadeyBolinha;
}

  if(xBolinha > width ||
     xBolinha < 0){
    velocidadexBolinha *= -1;
  }
  
  if(yBolinha > height ||
     yBolinha < 0) {
    velocidadeyBolinha *= -1;
 }
2 respostas
solução!

Olá Patricia, tudo bem contigo?

Bom vamos lá, na verdade, o seu código está perfeito, tá bom.

A única coisa que precisa de uma mudança seria onde você está colocando as verificações, isso porque elas no momento estão em um escopo global e isso não pode acontecer, elas precisam estar em uma função ou numa variável para poderem ser aplicadas em algum momento no código, elas não podem simplesmente estar "jogadas" no escopo global. É por isso que o p5 reclamou, veja que ele dá uma dica sobre isso bem aqui: "If you have defined it in your code, you should check its scope", no português: "Se você o definiu em seu código, verifique seu escopo", basicamente se você tem uma verificação no escopo global ela não tem nenhuma função, pois ela está "jogada" ali e não poderá ser chamada em um momento chave ou especifico do código.

Para resolver esse problema podemos simplesmente colocar as verificações dentro da function draw, dessa forma:

let xBolinha = 300;
let yBolinha = 200;
let diametro = 15;

let velocidadexBolinha = 6;
let velocidadeyBolinha = 6;

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

function draw() {
  background(0);
  circle(xBolinha, yBolinha, diametro)
  xBolinha += velocidadexBolinha;
  yBolinha += velocidadeyBolinha;
  
  if(xBolinha > width || xBolinha < 0){
    velocidadexBolinha *= -1;
  }
  
  if(yBolinha > height ||
     yBolinha < 0) {
    velocidadeyBolinha *= -1;
 }

}

Dessa forma o código vai rodar normalmente e sem problemas.

Em suma era isso, espero ter ajudado, caso precise eu estarei aqui para ajudar!

Abraços e bons estudos.

Caso este post tenha lhe ajudado, por favor marque ele como solução! ✓

Funcionou, obrigada!