Processing
Børre Stenseth
Skisser >Musebevegelser

Museaksjon

Hva

Vi kan plukke opp musebegelser og og utføre handlinger av hengig av om vi klikker, flytter musa eller dragger (flytter med museknppen nede).

Begreper som du finner i dokumentasjonen til Processing Reference

mousePressed(), mouseDragged(), mouseClicked(), mouseMoved()
mouseX, mouseY, pmouseX, pmouseY
Relevante Skisser
mousing1, mousing2

Vi ser på to enkle eksempler.

Eksemplel1

Her kan vi klikke med musa, og klikket etterlater en rød sirkel. Sirklene overlever fra en uttegning (draw()) til den neste fordi vi ikke blanker siden ved hver uttegning. Hvis vi hadde skrevet f.eks. background(255) istarten av draw(), ville alt unntatt den siste sirkelen forsvinne.

mousing1

Koden er i sin helhet slik:

_mousing1.pde
/*
 tegner en kule der vi har klikket med musa
 høyreklikk fjerner kuler
*/
// kuleposisjon
float xPos,yPos;
float radius=10;
void setup(){
  size(300,300);
  xPos=100;
  yPos=100;
  background(255,255,255);
  frameRate(60);
}
void draw(){
  fill(255,0,0);
  ellipse(xPos,yPos,radius,radius);
}
void mouseClicked(){
  // har vi høyreklikket ?
  if(mouseButton == RIGHT){
    // fjern alle (untatt siste)
    background(255,255,255);
  }
  else{
    // mouseX og mouseY angir hvor vi klikket
    xPos=mouseX;
    yPos=mouseY;
  }
}

Eksemplel2

Her bruker vi musa til å tegne med. Når vi dragger, drar musa med museknappen nedtrykt, etterlater den en strek. Når vi klikker med høyre museknapp nede, blankes siden og vi kan begynne på nytt.

mousing2

Koden er i sin helhet slik:

_mousing2.pde
/*
 Tegner en strek når museknappen er nede
 Blanker ut når vi høyre-klikker
*/
boolean dragging=false;
void setup(){
  size(300,300);
  background(255,255,255);
  frameRate(60);
}
void draw(){
  // pmouseX,pmouseY er forrige museposisjon
  if(dragging)
    line(pmouseX,pmouseY,mouseX,mouseY);
}
void mouseDragged(){
  dragging=true;
}
void mouseMoved(){
  dragging=false;
}
void mouseClicked(){
  background(255,255,255);
}
Skisser >Musebevegelser