Processing.js
Processing
Børre Stenseth
p5js >Interaktiv1

Interaksjon

Hva

Vi bruker museaksjon for å flytt (sirkel) objekter i scenen.


Hvis du tester, forsøker å dra en kule med musa, vil du se at det er to ting som burde forbedres: For det første kan vi dra kula ut av sketchen, og for det andre flytter ikke den kula vi drar til front.

Sketchen ser slik:

_sketch.js
//En skisse med noen kuler
 
// kulene, en array av kuleobjekter
var kuleListe;
var dragged;
function setup(){
  var canvas = createCanvas(200, 150);
  canvas.parent('canvasHere');
  // plasser nye kuleobjekter i kulelista
  kuleListe=new Array();
  kuleListe[0]= new kule(50,50,20,color(0,255,0));
  kuleListe[1]= new kule(50,100,20,color(0,0,255));
  kuleListe[2]= new kule(100,100,20,color(255,255,0));
  dragged=null;
}
function draw(){
  background(255,255,255);
  // be kulene om å tegne seg
  for(var ix=0;ix < kuleListe.length; ix++){
    kuleListe[ix].tegn();
  }
}
function mousePressed(){
    for(var i=kuleListe.length-1;  i>=0; i--){
        if(kuleListe[i].truffet()){
            dragged=kuleListe[i];
        }
    }
}
function mouseDragged(){
    if(dragged!=null)
        dragged.flytt();
}
function mouseReleased(){
    dragged=null;
}

Kuleobjektet er beskrevet slik:

_kule.js
// Representasjon et kuleobjekt
function kule(xpos,ypos,radius,farge){
  this.xPos=xpos;
  this.yPos=ypos;
  this.radius=radius;
  this.farge=farge;
 
  this.tegn=function(){
        push();
        fill(this.farge);
        ellipse(this.xPos,this.yPos,
                2*this.radius,2*this.radius);
        pop();
    }
  this.truffet=function(){
        if(dist(mouseX,mouseY,this.xPos,this.yPos)< this.radius)
            return true;;
        return false;
  }
  this.flytt=function(){
        this.xPos+=(mouseX-pmouseX);
        this.yPos+=(mouseY-pmouseY);
  }
}

Du kan inspisere denne strukturen på denne siden:
test.html https://borres.hiof.no/wep/proc/p5js/interaksjon1/test.html

På siden Interaktiv2 finner du en versjon som forsøker å rette de feilene som er nevnt ovenfor.

[1]
Referanser
  1. Processing.js Processing.js JavaScript interpretator for Processing processingjs.org/ 01-04-2014
p5js >Interaktiv1