// Initialize the loading bar with intensities int[] loadingBar = {0,0,0,0,0,0,50,100,150,200,250,200,150,100,50}; int boxWidth; // Save the number of boxes by getting the length of the array int numBoxes = loadingBar.length; void setup() { size(650, 75); // move the bar slowly so you can see it move frameRate(5); // a box is as wide as the screen divided by the number of boxes boxWidth = width/numBoxes; } // draw the loading bar void drawBar() { // cycle over each element of the array for (int i = 0; i < numBoxes; i += 1) { // set the stroke and fill to the intensity of the array value fill(loadingBar[i]); stroke(loadingBar[i]); // draw each box, starting at the top left corner rect(boxWidth * i, 0, boxWidth, height); } } // change the intensity of each array value void changeState() { // FIXME -- this should go right to left, and wrap around for (int i = 0; i < numBoxes - 1; i++) { // put the intensity of the box to the right into the current box loadingBar[i] = loadingBar[i+1]; } } void draw() { drawBar(); changeState(); }