topical media & game development

talk show tell print

#javascript-processing-example-topic-gui-imagebutton.htm / htm



  <!DOCTYPE html>
  <html><head>
  <script src="javascript-processing-example-processing.js"></script>
  <script src="javascript-processing-example-init.js"></script>
  <link rel="stylesheet" href="javascript-processing-example-style.css">
  </head><body><h1><a href="http://ejohn.org/blog/processingjs/">Processing.js</a></h1>
  <h2>ImageButton</h2>
  
  <p>Loading images and using them to create a button.</p>
  
  <p><a href="http://processing.org/learning/topics/imagebutton.html"><b>Original Processing.org Example:</b> ImageButton</a><br>
  <script type="application/processing">
  ImageButtons button;
  
  void setup()
  {
    size(200, 200);
    background(102, 102, 102);
    
    // Define and create image button
    PImage b = loadImage("base.gif");
    PImage r = loadImage("roll.gif");
    PImage d = loadImage("down.gif");
    int x = width/2 - b.width/2;
    int y = height/2 - b.height/2; 
    int w = b.width;
    int h = b.height;
    button = new ImageButtons(x, y, w, h, b, r, d);
  }
  
  void draw()
  {
    button.update();
    button.display();
  }
  
  class Button
  {
    int x, y;
    int w, h;
    color basecolor, highlightcolor;
    color currentcolor;
    boolean isOver = false;
    boolean isPressed = false;   
    
    void pressed() {
      if(isOver && mousePressed) {
        isPressed = true;
      } else {
        isPressed = false;
      }    
    }
    
    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;
    }
  }
  }
  
  class ImageButtons extends Button 
  {
    PImage base;
    PImage roll;
    PImage down;
    PImage currentimage;
  
    ImageButtons(int ix, int iy, int iw, int ih, PImage ibase, PImage iroll, PImage idown) 
    {
      x = ix;
      y = iy;
      w = iw;
      h = ih;
      base = ibase;
      roll = iroll;
      down = idown;
      currentimage = base;
    }
    
    void update() 
    {
      over();
      pressed();
      if(isPressed) {
        currentimage = down;
      } else if (over){
        currentimage = roll;
      } else {
        currentimage = base;
      }
    }
    
    void over() 
    {
      if( overRect(x, y, w, h) ) {
        isOver = true;
      } else {
        isOver = false;
      }
    }
    
    void display() 
    {
      image(currentimage, x, y);
    }
  }
  </script><canvas width="200" height="200"></canvas></p>
  <div style="overflow: hidden; height: 0px; width: 0px;"><img src="javascript-processing-example-base.gif" id="base.gif"><img src="javascript-processing-example-down.gif" id="down.gif"><img src="javascript-processing-example-roll.gif" id="roll.gif"></div>
  
  <pre><b>// All Examples Written by <a href="http://reas.com/">Casey Reas</a> and <a href="http://benfry.com/">Ben Fry</a>
  // unless otherwise stated.</b>
  ImageButtons button;
  
  void setup()
  {
    size(200, 200);
    background(102, 102, 102);
    
    // Define and create image button
    PImage b = loadImage("base.gif");
    PImage r = loadImage("roll.gif");
    PImage d = loadImage("down.gif");
    int x = width/2 - b.width/2;
    int y = height/2 - b.height/2; 
    int w = b.width;
    int h = b.height;
    button = new ImageButtons(x, y, w, h, b, r, d);
  }
  
  void draw()
  {
    button.update();
    button.display();
  }
  
  class Button
  {
    int x, y;
    int w, h;
    color basecolor, highlightcolor;
    color currentcolor;
    boolean over = false;
    boolean pressed = false;   
    
    void pressed() {
      if(over &amp;&amp; mousePressed) {
        pressed = true;
      } else {
        pressed = false;
      }    
    }
    
    boolean overRect(int x, int y, int width, int height) {
    if (mouseX &gt;= x &amp;&amp; mouseX &lt;= x+width &amp;&amp; 
        mouseY &gt;= y &amp;&amp; mouseY &lt;= y+height) {
      return true;
    } else {
      return false;
    }
  }
  }
  
  class ImageButtons extends Button 
  {
    PImage base;
    PImage roll;
    PImage down;
    PImage currentimage;
  
    ImageButtons(int ix, int iy, int iw, int ih, PImage ibase, PImage iroll, PImage idown) 
    {
      x = ix;
      y = iy;
      w = iw;
      h = ih;
      base = ibase;
      roll = iroll;
      down = idown;
      currentimage = base;
    }
    
    void update() 
    {
      over();
      pressed();
      if(pressed) {
        currentimage = down;
      } else if (over){
        currentimage = roll;
      } else {
        currentimage = base;
      }
    }
    
    void over() 
    {
      if( overRect(x, y, w, h) ) {
        over = true;
      } else {
        over = false;
      }
    }
    
    void display() 
    {
      image(currentimage, x, y);
    }
  }</pre>
  
  </body></html>
  


(C) Æliens 20/2/2008

You may not copy or print any of this material without explicit permission of the author or the publisher. In case of other copyright issues, contact the author.