2017-09-21 2 views
0

J'essaie de créer un programme de dessin simple où la couleur et la taille de la ligne en cours de dessin changent lorsque la touche 'e' est maintenue enfoncée. Toutefois, lorsque j'essaie d'utiliser keyPressed, il s'exécute une seule fois, ce qui entraîne l'affichage d'un seul point bleu au lieu de changer toute la ligne. Fondamentalement, ce que j'ai besoin de savoir, c'est comment faire quelque chose quand une clé est tenue, parce qu'elle enregistre seulement la presse une fois. Voilà ce que j'ai jusqu'à présent:Comment faire quelque chose quand une touche est enfoncée dans p5.js

function keyTyped() { 
     if (key === 'e') { 
     if (mouseY < 417) { 
      fill(0,0,255,100); 
      ellipse(mouseX,mouseY,5,5); 
     } 
     } 
    } 

au lieu de

function draw() { 
    if (mouseY < 417) { 
     noStroke(); 
     fill(0,100); 
     ellipse(mouseX,mouseY,20,20); 
    } 
    } 
+0

Avez-vous déjà compris cela? –

+0

@Kevin Workman tout a été résolu à la fin, merci pour l'aide. –

+0

Pas de problème. Notez que vous pouvez marquer une question comme acceptée si elle vous a aidé. –

Répondre

0

Vous pouvez simplement vérifier de la fonction draw(), comme ceci:

function draw() { 
    if (keyIsPressed && key == 'e') { 
    noStroke(); 
    fill(0,100); 
    ellipse(mouseX,mouseY,20,20); 
    } 
} 

Ou vous pouvez créer une variable qui suit si la touche est pressée. Définissez-le sur true à partir de la fonction keyPressed() et définissez-le sur false dans la fonction keyReleased(). Ensuite, vérifiez la variable dans la fonction draw(). Les informations peuvent être trouvées dans the reference.

+0

Cela aide certainement, mais il dessine encore des cercles noirs semi-transparents sur eux: http://i66.tinypic.com/2d1n668.png - Des suggestions? –

+0

@KatK C'est exactement ce que j'attendrais de ce code. Qu'attendiez-vous? Notez que si vous voulez effacer les anciens cadres, vous devriez appeler la fonction 'background()' en haut de 'draw()'. –

+0

Lorsque j'appelle l'arrière-plan, je viens d'obtenir un point bleu qui suit ma souris sans laisser de trace. –