Annonce

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


#1 2012-06-04 01:56:54 question de nioub...

bouclettes
membre
Lieu: 74/93
Date d'inscription: 2011-09-30
Messages: 67

question de nioub...



Salut à tous,

pour ceux qui ont la patience, une question de nioub.
Je me mets à Processing et mon premier but est de créer une classe Slider, un bête slider (certes c'est un peu réinventer la roue mais bon...).
Et ben je galère...
Dessiner le slider ça va, le mettre en surbrillance quand la souris passe dessus ça va.
Mais quand il s'agit du mouvement, j'arrive à ne le faire bouger que si la souris reste au dessus de la zone de "survol". Logique puisque c'est une des conditions qui le rend mobile. Mais un peu pénible à l'usage, il faut faire attention à rester bien dans l'axe du slider sinon il s'immobilise.
Bref un petit code sera plus parlant que de long discours:


int Y=100;

void setup()
{
  size(400,400);
  smooth();
}


void draw()
{
  boolean survolCurs=false;
  boolean survolSlider=false;
  background(0);
  stroke(255);
  strokeWeight(1);
  line(110,80,110,200);   //axe du slider
  line(100,Y,120,Y);      //curseur
  survolCurs=mouseX>100 && mouseX<120 && mouseY>Y-7 && mouseY<Y+7;
  survolSlider=mouseX>100 && mouseX<120 && mouseY>80 && mouseY<200;
  if(survolCurs==true)
  {
    strokeWeight(3);
    line(100,Y,120,Y);
  }
  if(survolSlider==true && mousePressed==true)
  {
    Y=mouseY;
  }
}


S'il y a une âme charitable pour me donner un petit coup de pouce, merci beaucoup.
Et désolé pour cette véritable question de nioub!!

bouclettes

Hors ligne

 

#2 2012-06-04 09:42:02 Re : question de nioub...

Malleat
membre
Date d'inscription: 2012-04-15
Messages: 148
Site web

Re: question de nioub...



cette librairie avec ses exemples pourrait peut être t'aider?

http://www.sojamo.de/libraries/controlP5/


SITE WEB ->REVŒLUTION

Hors ligne

 

#3 2012-06-04 10:05:30 Re : question de nioub...

bouclettes
membre
Lieu: 74/93
Date d'inscription: 2011-09-30
Messages: 67

Re: question de nioub...



Oui elle est super cette librairie effectivement.
Mais chercher le code correspondant à ce que je veux faire c'est comme chercher un aiguille dans une botte de foin. Et je reste (pour l'instant) sur l'idée de créer mes propres sliders.

C'est vraiment le principe de programmation que je n'arrive pas à trouver.

merci en tout cas

bouclettes

Hors ligne

 

#4 2012-06-04 14:39:16 Re : question de nioub...

matheynen
membre
Date d'inscription: 2008-06-09
Messages: 226

Re: question de nioub...



Voici un code tiré du processing hanbbook :

Scrollbar bar1, bar2;
PFont font;

void setup() {
  size(100, 100);
  noStroke();
// Inputs: x, y, width, height, minVal, maxVal
  bar1 = new Scrollbar(10, 35, 80, 10, 0.0, 100.0);
  bar2 = new Scrollbar(10, 55, 80, 10, 0.0, 1.0);
  font = loadFont("Courier-30.vlw");
  textFont(font);
  textAlign(CENTER);
}

void draw() {
  background(204);
  fill(0);
  int pos1 = int(bar1.getPos());
  text(nf(pos1, 2), 50, 30);
  float pos2 = bar2.getPos();
  text(nf(pos2, 1, 2), 50, 90);
  bar1.update(mouseX, mouseY);
  bar2.update(mouseX, mouseY);
  bar1.display();
  bar2.display();
}

void mousePressed() {
  bar1.press(mouseX, mouseY);
  bar2.press(mouseX, mouseY);
}

void mouseReleased() {
  bar1.release();
  bar2.release();
}

class Scrollbar {
  int x, y; // The x- and y-coordinates
  float sw, sh; // Width and height of scrollbar
  float pos; // Position of thumb
  float posMin, posMax; // Max and min values of thumb
  boolean rollover; // True when the mouse is over
  boolean locked; // True when its the active scrollbar
  float minVal, maxVal; // Min and max values for the thumb
  Scrollbar(int xp, int yp, int w, int h, float miv, float mav) {
    x = xp;
    y = yp;
    sw = w;
    sh = h;
    minVal = miv;
    maxVal = mav;
    pos = x + sw / 2 - sh / 2;
    posMin = x;
    posMax = x + sw - sh;
  }

  // Updates the over boolean and the position of the thumb
  void update(int mx, int my) {
    if (over(mx, my) == true) {
      rollover = true;
    } else {
      rollover = false;
    }
    if (locked == true) {
      pos = constrain(mx - sh / 2, posMin, posMax);
    }
  }

  // Locks the thumb so the mouse can move off and still update
  void press(int mx, int my) {
    if (rollover == true) {
      locked = true;
    } else {
      locked = false;
    }
  }

  // Resets the scrollbar to neutral
  void release() {
    locked = false;
  }
  
  // Returns true if the cursor is over the scrollbar
  boolean over(int mx, int my) {
    if ((mx > x) && (mx < x + sw) && (my > y) && (my < y + sh)) {
      return true;
    } else {
      return false;
    }
  }

  // Draws the scrollbar to the screen
  void display() {
    fill(255);
    rect(x, y, sw, sh);
    if ((rollover == true) || (locked == true)) {
      fill(0);
    } else {
      fill(102);
    }
    rect(pos, y, sh, sh);
  }

  // Returns the current value of the thumb
  float getPos() {
    float scalar = sw / (sw - sh);
    float ratio = (pos - x) * scalar;
    float offset = minVal + (ratio / sw * (maxVal - minVal));
    return offset;
  }
}

Normalement, il y a tout ce qu'il te faut


Ce que vous avez fait au plus petit de mes frères, c'est à moi que vous l'avez fait.

Hors ligne

 

#5 2012-06-04 15:23:07 Re : question de nioub...

bouclettes
membre
Lieu: 74/93
Date d'inscription: 2011-09-30
Messages: 67

Re: question de nioub...



Merci!!

je vais décortiquer ça.

Hors ligne

 

fil rss de cette discussion : rss

Pied de page des forums

Powered by FluxBB

codelab, graphisme & code : emoc / 2008-2024