He visto algunas publicaciones cerradas en GitHub, y la pregunta similar sin resolver ocasional en retornos aleatorios, pero puedo obtener una buena explicación de por qué en un simple comando print() de un objeto definido, el objeto se está imprimiendo en la consola aparentemente en un bucle:
Acabo de empezar a usar p5js y no sé javascript. Por lo tanto, puede ser donde se colocan los comandos ( function setup() o function draw() ), que todavía no estoy seguro de por qué están predeterminados en la página de inicio del editor, o debo especificar que quiero que el resultado se imprima solo una vez. (?).
Esto sucede porque draw() se ejecuta en un bucle. Detrás de escena, la biblioteca p5js usa requestAnimationFrame para llamar a draw() .
Puede mover la declaración de print para que esté dentro de la función setup() , que solo se ejecuta una vez al comienzo del script.
function setup() { createCanvas(400, 400); c = createVector(0,0); print(c.toString()); } function draw() { //print(c.toString()); background(220); }O si lo prefiere, puede configurar un bloque de impresión condicional de la siguiente manera:
var printed = false; function setup() { createCanvas(400, 400); c = createVector(0,0); //print(c.toString()); } function draw() { if (!printed) { print(c.toString()); printed = true; } background(220); } Nota : también considere usar el método toString en el objeto p5.Vector para una salida más limpia.
Si necesita obtener resultados de una función que se llama desde dentro de la función draw() , puede aplicar los mismos principios de la siguiente manera:
var printed = false; function setup(){ createCanvas(400, 400); c = createVector(0,0); print(c); } function draw() { background(220); } function beingCalledWithinDraw(){ if (!printed) { print(c); printed = true; } }Ejemplo ejecutable:
var printed = false; function setup() { createCanvas(400, 400); c = createVector(0, 0); //print(c.toString()); } function draw() { background(220); beingCalledWithinDraw(); } function beingCalledWithinDraw() { if (!printed) { print(c.toString()); printed = true; } } <script src="https://cdn.jsdelivr.net/npm/p5@1.4.0/lib/p5.min.js"></script>