• fullscreen
  • Interactive_Animation_apr15h.pde
  •  // All Examples Written by Casey Reas and Ben Fry  
     // unless otherwise stated.  
     
     
     Handle[] handles;  
     int num;  
       
     void setup()  
     {  
       size(200, 200);  
       num = height/15;  
       handles = new Handle[num];  
       int hsize = 10;  
       for(int i=0; i<num; i++) {  
         handles[i] = new Handle(width/2, 10+i*15, 50-hsize/2, 10, handles);  
       }  
     }  
       
     void draw()  
     {  
       background(153);  
         
       for(int i=0; i<num; i++) {  
        handles[i].update();  
         handles[i].display();  
       }  
         
       fill(0);  
       rect(0, 0, width/2, height);  
     }  
       
     void mouseReleased()   
     {  
       for(int i=0; i<num; i++) {  
         handles[i].release();  
       }  
     }  
       
     class Handle  
     {  
       int x, y;  
       int boxx, boxy;  
       int length;  
       int size;  
       boolean over;  
       boolean press;  
       boolean locked = false;  
       boolean otherslocked = false;  
       Handle[] others;  
         
       Handle(int ix, int iy, int il, int is, Handle[] o)  
       {  
         x = ix;  
         y = iy;  
         length = il;  
         size = is;  
         boxx = x+length - size/2;  
         boxy = y - size/2;  
         others = o;  
       }  
         
       void update()   
       {  
         boxx = x+length;  
         boxy = y - size/2;  
           
         for(int i=0; i<others.length; i++) {  
           if(others[i].locked == true) {  
             otherslocked = true;  
             break;  
           } else {  
             otherslocked = false;  
           }    
         }  
           
         if(otherslocked == false) {  
           over();  
           press();  
         }  
           
         if(press) {  
           length = lock(mouseX-width/2-size/2, 0, width/2-size-1);  
         }  
       }  
         
       void over()  
       {  
         if(overRect(boxx, boxy, size, size)) {  
           over = true;  
         } else {  
           over = false;  
         }  
       }  
         
       void press()  
       {  
         if(over && mousePressed || locked) {  
           press = true;  
           locked = true;  
         } else {  
           press = false;  
         }  
       }  
         
       void release()  
       {  
         locked = false;  
       }  
         
       void display()   
       {  
         line(x, y, x+length, y);  
         fill(255);  
         stroke(0);  
         rect(boxx, boxy, size, size);  
         if(over || press) {  
           line(boxx, boxy, boxx+size, boxy+size);  
           line(boxx, boxy+size, boxx+size, boxy);  
         }  
       
       }  
     }  
       
     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;  
       }  
     }  
       
     int lock(int val, int minv, int maxv)   
     {   
      return  min(max(val, minv), maxv);   
    }
    

    code

    tweaks (0)

    about this sketch

    This sketch is running as Java applet, exported from Processing.

    license

    advertisement

    Johanna Loch-Allen

    break_day2_researching4project1_sketch5

    Add to Faves Me Likey@!
    You must login/register to add this sketch to your favorites.

    You need to login/register to comment.