Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

140
Visualizações
¿Por qué esta lógica de deshacer no funciona en p5.js?

Mi lógica es simple, cree una matriz de estado y un índice de estado, cuando el usuario interactúe con el dibujo, guarde el estado actual como una entrada en la matriz e incremente el índice de estado.

Cuando el usuario presiona "deshacer" (para este boceto, presione cualquier tecla), disminuya el índice de estado y dibuje en la página cualquier valor que esté en estado para ese índice.

Lo implementé en este boceto https://editor.p5js.org/mr_anonymous/sketches/s0C1M7x1w pero, como puede ver, en lugar de almacenar el último estado del dibujo, parece que solo almacena el estado en blanco.

¿Alguien sabe qué está pasando mal?

Editar: código fuente agregado

 let previousState; let stateIndex = 0; let state = []; function setup() { createCanvas(400, 400); background(255); // save state at beginning for blank canvas saveState(); } function draw() { if (mouseIsPressed) { fill(0, 0, 0); circle(mouseX, mouseY, 20); } } function keyPressed(e) { undoToPreviousState(); } function undoToPreviousState() { if (!state || !state.length || stateIndex === 0) { return; } stateIndex --; background(255); set(state[stateIndex], 0, 0); } function mousePressed() { saveState(); } function saveState() { stateIndex ++; loadPixels(); state.push({...get()}) }
about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Está utilizando la función set() incorrectamente. Si bien get() se puede usar para obtener un objeto p5.Image , no hay sobrecarga de set() que toma uno (un poco idiosincrásico, lo sé). En su lugar, querrá usar la función image() :

 let previousState; let stateIndex = 0; let state = []; function setup() { createCanvas(400, 400); background(200); // save state at beginning for blank canvas saveState(); } function draw() { if (mouseIsPressed) { fill(0, 0, 0); circle(mouseX, mouseY, 20); } } function keyPressed(e) { undoToPreviousState(); } function undoToPreviousState() { if (!state || !state.length || stateIndex === 0) { return; } stateIndex--; background(200); image(state[stateIndex], 0, 0); } function mousePressed() { saveState(); } function saveState() { stateIndex++; loadPixels(); state.push(get()) }
 <script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.4.0/p5.js"></script>

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda