Documentation
Interaction
Une valeur est controllée par un paramètre extérieur.
La souris
mouseX, mouseYposition actuelle dans le canvaspmouseX, pmouseYposition à la frame précédentemouseIsPressedtrue tant que le bouton est enfoncémouseButtonLEFT, RIGHT ou CENTERfunction draw() {
background(240);
circle(mouseX, mouseY, 60);
}
function draw() {
background(240);
let total = int(map(mouseX, 0, width, 3, 60));
let span = width / total;
for (let i = 0; i < total; i++) {
circle(i * span + span / 2, height / 2, span * 0.7);
}
}
int() arrondit à l'entier inférieur.
Vitesse du geste
let speed = dist(mouseX, mouseY, pmouseX, pmouseY);
strokeWeight(map(speed, 0, 50, 1, 30));
line(pmouseX, pmouseY, mouseX, mouseY);
Le clavier
keyIsPressedtrue tant qu'une touche est enfoncéekeyle caractère de la dernière touchekeyCodecode des touches spéciales (flèches, entrée…)keyIsDown(code)teste une touche précise, en continulet x;
function setup() {
createCanvas(400, 400);
x = width/2;
}
function draw() {
background(240);
if (keyIsDown(LEFT_ARROW)) x -= 3;
if (keyIsDown(RIGHT_ARROW)) x += 3;
circle(x, height / 2, 50);
}
keyIsDown() = mouvement continu tant que la touche est maintenue. keyPressed() = déclenchée une seule fois.
Événements
function mousePressed() {
// une fois, au moment du clic
}
function mouseReleased() {
// au relâchement
}
function mouseDragged() {
// à chaque déplacement, bouton enfoncé
}
function keyPressed() {
// une fois, à l'appui d'une touche
if (key === 's') saveCanvas('capture', 'png');
if (key === ' ') x = 0;
}
function windowResized() {
resizeCanvas(windowWidth, windowHeight);
}
Gérer un état
let mode = 0;
let points = [];
function setup() {
createCanvas(600, 600);
}
function mousePressed() {
points.push({ x: mouseX, y: mouseY });
}
function keyPressed() {
if (key === 'm') mode = (mode + 1) % 3; // cycle entre 0, 1 et 2
if (key === 'c') points = []; // tout effacer
}
function draw() {
background(240);
for (let p of points) {
if (mode === 0) circle(p.x, p.y, 30);
if (mode === 1) rect(p.x, p.y, 30, 30);
if (mode === 2) line(p.x - 15, p.y, p.x + 15, p.y);
}
}
Détecter une zone
function setup() {
createCanvas(400, 400);
}
function draw() {
background(220);
let cx = width/2;
let cy = height/2;
let radius = 100
let d = dist(mouseX, mouseY, cx, cy);
if (d < radius) {
// la souris est dessus
circle(width/2, height/2, radius);
}
}
Capturer une image
function keyPressed() {
if (key === 's') {
noLoop();
saveCanvas('capture', 'png');
loop();
}
}
Pour une vidéo, utilisez un outil de capture d'écran système. C'est plus fiable qu'un enregistrement depuis le navigateur.