graphic-processing-site-examples-Basics-Image-RequestImage-RequestImage.pde / pde
Request Image by Ira Greenberg. From Processing for Flash Developers, Friends of ED, 2009. Shows how to use the requestImage() function with preloader animation. The requestImage() function loads images on a separate thread so that the sketch does not freeze while they load. It's very useful when you are loading large images, as this example demonstrates. To work, this example requires 10 images named dublin0.jpg ... dublin9.jpg in the sketch data directory. To save space, these images are not included with the example.
int imgCount = 10; PImage[] imgs = new PImage[imgCount]; float imgW; // Keeps track of loaded images (true or false) boolean[] loadStates = new boolean[imgCount]; // For loading animation float loaderX, loaderY, theta; void setup() { size(800, 60); smooth(); imgW = width/imgCount; // Load images asynchronously for (int i = 0; i < imgCount; i++){ imgs[i] = requestImage("dublin"+i+".jpg"); } } void draw(){ background(0); // Start loading animation runLoaderAni(); for (int i = 0; i < imgs.length; i++){ // Check if individual images are fully loaded if ((imgs[i].width != 0) && (imgs[i].width != -1)){ // As images are loaded set true in boolean array loadStates[i] = true; } } // When all images are loaded draw them to the screen if (checkLoadStates()){ drawImages(); } } void drawImages(){ for (int i = 0; i < imgs.length; i++){ image(imgs[i], width/10*i, 0, imgW, height); } } // Loading animation void runLoaderAni(){ // Only run when images are loading if (!checkLoadStates()){ ellipse(loaderX, loaderY, 10, 10); loaderX += 2; loaderY = height/2 + sin(theta) * (height/2.5); theta += PI/22; // Reposition ellipse if it goes off the screen if (loaderX > width + 5){ loaderX = -5; } } } // Return true when all images are loaded - no false values left in array boolean checkLoadStates(){ for (int i = 0; i < imgs.length; i++){ if (loadStates[i] == false){ return false; } } return true; }
(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.