| 
					 
					 
					       by 
					kirupa  |  31 May 2008 
					In the 
					previous page, you downloaded an existing Flash 
					application that loads external content without using a 
					preloader. A few pages before that, you learned how to 
					create a preloader by implementing a progress bar. In this 
					page, we put those together to create a Flash application 
					that uses a preloader to inform users when external content 
					is being loaded. 
					 
					You should have both your imageload.fla application as well 
					as your preloader application open currently in Flash. 
					Switch into your preloader application. You should see your 
					preloaderMC movie clip displayed on the design surface: 
					
					  
					
					[ the only thing your preloader application will have is 
					your preloaderMC movie clip ] 
					Copy this movie clip by right clicking on it 
					and selecting Copy. Now, with this movie clip copied, switch 
					back into your loadimage.fla application. Insert a new layer 
					between your image and action layers, and 
					give this new layer the name preloader: 
					
					  
					
					[ insert a new layer called preloader 
					between your action and image layers ] 
					Your preloader layer should be selected. With the 
					preloader selected, press Ctrl + V (or Edit | Paste) to 
					paste your preloader movie clip onto this application. Your 
					design surface will look like the following: 
					
					  
					
					[ paste your preloaderMC movie clip you copied earlier into 
					your preloader layer ] 
					While your preloader has now been added to this 
					application, it won't work because we haven't actually 
					hooked anything up. If you happen to test your application, 
					the following is what you would see: 
					
					  
					
					[ ...this can't be right! ] 
					Notice that your image is displayed in the image layer 
					and your preloader is also displayed at the same time. As 
					you can guess, this isn't the behavior we are looking for. 
					What we want is the preloader to display while the image is 
					downloading and then hide the preloader once the image has 
					fully loaded. 
					This will require you modify the code we have already 
					written. Launch the Actions window again by selecting the 
					keyframe on your action layer in 
					loadimage.fla. You should already have code that powers the 
					image loading, so add the following highlighted lines in the 
					appropriate areas: 
					
						- var
						imageLoader:Loader;
						
						
 
						-   
 
						- function
						loadImage(url:String):void
						{
  
						// Show Preloader  
						preloader.visible = true;    
						
							- // Set properties on my 
							Loader object
							 
 
							- imageLoader
							= 
							
							new 
							Loader();
							
							
 
							- imageLoader.load(new
							URLRequest(url));
							
							
 
							- imageLoader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS,
							
							imageLoading);
							
							
 
							- imageLoader.contentLoaderInfo.addEventListener(Event.COMPLETE,
							
							imageLoaded);
 
						 
						- } 
 
						- loadImage("pixelHouses.jpg");
						
						
 
						-   
 
						- function
						imageLoaded(e:Event):void
						{ 
 
						
							- // Load Image
							 
 
							- imageArea.addChild(imageLoader);
  
							
								- // Hide Preloader
								
 
								- preloader.visible
								=
								false;
 
							 
						 
						- } 
 
						-   
 
						- function
						imageLoading(e:ProgressEvent):void
						{ 
 
						
							
								- // Get current download 
								progress 
 
								- var
								loaded:Number
								=
								e.bytesLoaded
								/
								e.bytesTotal;
								
 
								-   
 
								- // Send progress info 
								to "preloader" movie clip 
 
								- preloader.SetProgress(loaded);
 
							 
						 
						- }
 
					 
					If you find it too tedious to copy and paste just the 
					lines that have been added, feel free to just copy 
					everything and overwrite what you already have. The end 
					result will be exactly the same. 
					Test your movie by pressing Ctrl + Enter. You should see 
					your image appear, but you now won't see your preloader. 
					That is good because we don't want the preloader to visible 
					once the image has loaded, but that isn't really helpful 
					because you can't say for sure whether the 
					preloader actually worked or not. The fix is simple. With 
					the preview Flash Player window still running, go to View | 
					Simulate Download: 
					
					  
					
					[ you can simulate your download and adjust the download 
					settings as appropriate ] 
					Once you have selected the Simulate Download command, 
					notice what you should be seeing. Instead of instantly 
					displaying your image, the Flash Player will pretend that it 
					is running on an internet connection and simulate whatever 
					speed you have specified under Download Settings: 
					
					  
					
					[ you are "downloading" the content! ] 
					
					You should now see your progress bar slowly filling up as 
					more of your image is getting "downloaded". Once the 
					progress bar fills up, the preloader disappears and your 
					image makes its appearance. 
					
					
					To learn a bit more about the Simulate Download feature, 
					check out my
					
					blog post on this topic. 
					Wohoo! You now have a working preloader. This is only a 
					part of what this tutorial hopes to cover. In the next page, 
					let's look in greater detail at what exactly the lines of 
					code you added did to make everything just work. 
					Onwards to the 
					next page! 
					
					 |