Annonce

>>> Bienvenue sur codelab! >>> Première visite ? >>> quelques mots sur codelab //// une carte des membres//// (apéros) codelab


#1 2013-09-12 18:26:08 Over rect a l envers

imdidi
membre
Date d'inscription: 2012-10-05
Messages: 242

Over rect a l envers



bonjour tous le monde

je galérè depuis quelque temps déjà. Sur le site de processing il y a une exemple de over rect qui fonctionne très bien d ailleurs en gros   le carre change de couleur quand la souris arrive dessus pour la sélection

mais ce que j ai besoin ses que quand la souris n est pas sur le carrer,sélectionne, et si il est sur le carrer, sélectionne pas

voici le code de processing

int rectX, rectY;      // Position of square button
int circleX, circleY;  // Position of circle button
int rectSize = 90;     // Diameter of rect
int circleSize = 93;   // Diameter of circle
color rectColor, circleColor, baseColor;
color rectHighlight, circleHighlight;
color currentColor;
boolean rectOver = false;
boolean circleOver = false;

void setup() {
  size(640, 360);
  rectColor = color(0);
  rectHighlight = color(51);
  circleColor = color(255);
  circleHighlight = color(204);
  baseColor = color(102);
  currentColor = baseColor;
  circleX = width/2+circleSize/2+10;
  circleY = height/2;
  rectX = width/2-rectSize-10;
  rectY = height/2-rectSize/2;
  ellipseMode(CENTER);
}

void draw() {
  update(mouseX, mouseY);
  background(currentColor);
  
  if (rectOver) {
    fill(rectHighlight);
  } else {
    fill(rectColor);
  }
  stroke(255);
  rect(rectX, rectY, rectSize, rectSize);
  
  if (circleOver) {
    fill(circleHighlight);
  } else {
    fill(circleColor);
  }
  stroke(0);
  ellipse(circleX, circleY, circleSize, circleSize);
}

void update(int x, int y) {
  if ( overCircle(circleX, circleY, circleSize) ) {
    circleOver = true;
    rectOver = false;
  } else if ( overRect(rectX, rectY, rectSize, rectSize) ) {
    rectOver = true;
    circleOver = false;
  } else {
    circleOver = rectOver = false;
  }
}

void mousePressed() {
  if (circleOver) {
    currentColor = circleColor;
  }
  if (rectOver) {
    currentColor = rectColor;
  }
}

boolean overRect(int x, int y, int width, int height)  {
  if (mouseX >= x && mouseX <= x+width && 
      mouseY >= y && mouseY <= y+height) {
    return true;
  } else {
    return false;
  }
}

boolean overCircle(int x, int y, int diameter) {
  float disX = x - mouseX;
  float disY = y - mouseY;
  if (sqrt(sq(disX) + sq(disY)) < diameter/2 ) {
    return true;
  } else {
    return false;
  }
}

merci d avance
a+

Hors ligne

 

#2 2013-09-13 09:17:19 Re : Over rect a l envers

Seb
membre
Lieu: Lyon
Date d'inscription: 2012-03-18
Messages: 63

Re: Over rect a l envers



Pardon mais j'ai un peu du mal à saisir ton problème, tu pourrais être plus clair ?


everything you know is wrong.

Hors ligne

 

#3 2013-09-13 13:59:45 Re : Over rect a l envers

Olivier
N°4
Lieu: Chalon sur la Saône
Date d'inscription: 2009-04-07
Messages: 1471
Site web

Re: Over rect a l envers



Oui...
Je crois que le plus dur n'est pas de te répondre mais de comprendre ta question... tongue

Si tu veux inverser le comportement du rollover sur le carré, il te suffit d'inverser les booléens en "return". Soit :

Code (P5) :

boolean overRect(int x, int y, int width, int height)  {
  if (mouseX >= x && mouseX <= x+width && 
      mouseY >= y && mouseY <= y+height) {
    return false;
  } else {
    return true;
  }
}

Mais je ne suis vraiment pas sûr de répondre à ton pb... hmm

Dernière modification par Olivier (2013-09-13 14:00:40)


L'Amour au Peuple !

Hors ligne

 

#4 2013-09-13 17:40:14 Re : Over rect a l envers

imdidi
membre
Date d'inscription: 2012-10-05
Messages: 242

Re: Over rect a l envers



salut a tous

je suis désoler si je me suis mal exprimer je ferais attention la prochaine fois

mais merci olivier ses en plein sa que je voulais faire quand je pense que s étais juste sa
je cherchais beaucoup trop loin

merci
a+

Hors ligne

 

fil rss de cette discussion : rss

Pied de page des forums

Powered by FluxBB

codelab, graphisme & code : emoc / 2008-2024