topical media & game development

talk show tell print

actionscript-book-FileIO-com-example-programmingas3-fileio-FileDownload.ax

actionscript-book-FileIO-com-example-programmingas3-fileio-FileDownload.ax [swf] flex


  package  {
      import flash.events.*;
      import flash.net.FileReference;
      import flash.net.URLRequest;
      
      import mx.controls.Button;
      import mx.controls.ProgressBar;
      import mx.core.UIComponent;
  
      public class @ax-actionscript-book-FileIO-com-example-programmingas3-fileio-FileDownload extends UIComponent {
          // Hard-code the URL of file to download to user's computer.
          private const DOWNLOAD_URL:String = "http://www.cs.vu.nl/~eliens/flex/test.zip";
          private var fr:FileReference;
          // Define reference to the download ProgressBar component.
          private var pb:ProgressBar;
          // Define reference to the "Cancel" button which will immediately stop the download in progress.
          private var btn:Button;
  
          public function @ax-actionscript-book-FileIO-com-example-programmingas3-fileio-FileDownload() {
          }
  
          
Set references to the components, and add listeners for the OPEN, PROGRESS, and COMPLETE events.

  
          public function init(pb:ProgressBar, btn:Button):void {
              // Set up the references to the progress bar and cancel button, which are passed from the calling script.
              this.pb = pb;
              this.btn = btn;
  
              fr = new FileReference();
              fr.addEventListener(Event.OPEN, openHandler);
              fr.addEventListener(ProgressEvent.PROGRESS, progressHandler);
              fr.addEventListener(Event.COMPLETE, completeHandler);
          }
  
          
Immediately cancel the download in progress and disable the cancel button.

  
          public function cancelDownload():void {
              fr.cancel();
              pb.label = "DOWNLOAD CANCELLED";
              btn.enabled = false;
          }
  
          
Begin downloading the file specified in the DOWNLOAD_URL constant.

  
          public function startDownload():void {
              var request:URLRequest = new URLRequest();
              request.url = DOWNLOAD_URL;
              fr.download(request);
          }
  
          
When the OPEN event has dispatched, change the progress bar's label and enable the "Cancel" button, which allows the user to abort the download operation.

  
          private function openHandler(event:Event):void {
              pb.label = "DOWNLOADING %3%%";
              btn.enabled = true;
          }
          
          
While the file is downloading, update the progress bar's status and label.

  
          private function progressHandler(event:ProgressEvent):void {
              pb.setProgress(event.bytesLoaded, event.bytesTotal);
          }
  
          
Once the download has completed, change the progress bar's label and disable the "Cancel" button since the download is already completed.

  
          private function completeHandler(event:Event):void {
              pb.label = "DOWNLOAD COMPLETE";
              pb.setProgress(0, 100);
              btn.enabled = false;
          }
      }
  }


(C) Æliens 27/08/2009

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.