topical media & game development

talk show tell print

#javascript-processing-example-basic-objects-objects.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>Objects</h2>
  
  <p>by hbarragan
  
  Move the cursor across the image to change the speed and positions
  of the geometry. The class MRect defines a group of lines.</p>
  
  <p><a href="http://processing.org/learning/basics/objects.html"><b>Original Processing.org Example:</b> Objects</a><br>
  <script type="application/processing">
  MRect r1, r2, r3, r4;
   
  void setup()
  {
    size(200, 200);
    fill(255, 204);
    noStroke();
    r1 = new MRect(1, 134.0, 0.532, 0.083*height, 10.0, 60.0);
    r2 = new MRect(2, 44.0, 0.166, 0.332*height, 5.0, 50.0);
    r3 = new MRect(2, 58.0, 0.332, 0.4482*height, 10.0, 35.0);
    r4 = new MRect(1, 120.0, 0.0498, 0.913*height, 15.0, 60.0);
  }
   
  void draw()
  {
    background(0);
    
    r1.display();
    r2.display();
    r3.display();
    r4.display();
   
    r1.move(mouseX-(width/2), mouseY+(height*0.1), 30);
    r2.move((mouseX+(width*0.05))\%width, mouseY+(height*0.025), 20);
    r3.move(mouseX/4, mouseY-(height*0.025), 40);
    r4.move(mouseX-(width/2), (height-mouseY), 50);
  }
   
  class MRect 
  {
    int w; // single bar width
    float xpos; // rect xposition
    float h; // rect height
    float ypos ; // rect yposition
    float d; // single bar distance
    float t; // number of bars
   
    MRect(int iw, float ixp, float ih, float iyp, float id, float it) {
      w = iw;
      xpos = ixp;
      h = ih;
      ypos = iyp;
      d = id;
      t = it;
    }
   
    void move (float posX, float posY, float damping) {
      float dif = ypos - posY;
      if (abs(dif) > 1) {
        ypos -= dif/damping;
      }
      dif = xpos - posX;
      if (abs(dif) > 1) {
        xpos -= dif/damping;
      }
    }
   
    void display() {
      for (int i=0; i<t; i++) {
        rect(xpos+(i*(d+w)), ypos, w, height*h);
      }
    }
  }
  </script><canvas width="200" height="200"></canvas></p>
  <div style="overflow: hidden; height: 0px; width: 0px;"></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>
  MRect r1, r2, r3, r4;
   
  void setup()
  {
    size(200, 200);
    fill(255, 204);
    noStroke();
    r1 = new MRect(1, 134.0, 0.532, 0.083*height, 10.0, 60.0);
    r2 = new MRect(2, 44.0, 0.166, 0.332*height, 5.0, 50.0);
    r3 = new MRect(2, 58.0, 0.332, 0.4482*height, 10.0, 35.0);
    r4 = new MRect(1, 120.0, 0.0498, 0.913*height, 15.0, 60.0);
  }
   
  void draw()
  {
    background(0);
    
    r1.display();
    r2.display();
    r3.display();
    r4.display();
   
    r1.move(mouseX-(width/2), mouseY+(height*0.1), 30);
    r2.move((mouseX+(width*0.05))\%width, mouseY+(height*0.025), 20);
    r3.move(mouseX/4, mouseY-(height*0.025), 40);
    r4.move(mouseX-(width/2), (height-mouseY), 50);
  }
   
  class MRect 
  {
    int w; // single bar width
    float xpos; // rect xposition
    float h; // rect height
    float ypos ; // rect yposition
    float d; // single bar distance
    float t; // number of bars
   
    MRect(int iw, float ixp, float ih, float iyp, float id, float it) {
      w = iw;
      xpos = ixp;
      h = ih;
      ypos = iyp;
      d = id;
      t = it;
    }
   
    void move (float posX, float posY, float damping) {
      float dif = ypos - posY;
      if (abs(dif) &gt; 1) {
        ypos -= dif/damping;
      }
      dif = xpos - posX;
      if (abs(dif) &gt; 1) {
        xpos -= dif/damping;
      }
    }
   
    void display() {
      for (int i=0; i&lt;t; i++) {
        rect(xpos+(i*(d+w)), ypos, w, height*h);
      }
    }
  }</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.