Estoy tratando de tomar la entrada del usuario y usarla para generar algunas cosas. Funciona cuando codifico las entradas para el generador de esta manera:
function setup() { createCanvas(1280, 512); generator = new Room_map(5, 10, 15); generator.draw(); }Sin embargo, cuando trato de tomar la entrada del usuario y generar cuando el usuario hace clic en el botón 'generar', aparece el error en el título.
Seguí la guía sobre la referencia de p5.js ( https://p5js.org/examples/dom-input-and-button.html ) y este es mi código para tomar la entrada del usuario:
function setup() { createCanvas(1280, 512); generator = new Room_map(5, 10, 15); input_no_of_rooms = createInput(); input_no_of_rooms.position(1100, 50); input_min_size = createInput(); input_min_size.position(1100, 90); input_max_size = createInput(); input_max_size.position(1100, 130); if (input_no_of_rooms > 0 && input_min_size > 0 && input_max_size > 0) { generator = new Room_map( input_no_of_rooms.value(), input_min_size.value(), input_max_size.value()) } button = createButton('Generate'); button.position(1100, 155); button.mousePressed(generator.draw()); background(200); push(); fill(0); text("Number of rooms: ", 1095, 40); text("Min room size: ", 1095, 80); text("Max room size: ", 1095, 120); pop(); }No tengo función de dibujo en mi código.
Esta línea de código es el problema:
button.mousePressed(generator.draw()); Esto invocará generator.draw() una vez y registrará lo que devuelva como el controlador mousePressed . Dado que no incluyó el código para Room_map , solo puedo especular sobre lo que hace draw() , pero supongo que no devuelve un objeto de función, y probablemente devuelve undefined . Como resultado, cada vez que se presiona el mouse, habrá un error porque no puede invocar undefined como una función. Lo que probablemente quisiste hacer es usar una función anónima:
button.mousePressed(() => generator.draw());