flex3自定义DownloadProgressBar

flex3 默认的loading 图片

flex3自定义DownloadProgressBar

1.简单的自定义loading效果图:

flex3自定义DownloadProgressBar

MyDownProBar.as
package com
{
import flash.display.Sprite;
import flash.events.Event;
import flash.events.ProgressEvent;
import flash.events.TimerEvent;
import flash.text.TextField;
import flash.utils.Timer;

import mx.events.FlexEvent;
import mx.preloaders.DownloadProgressBar;

public class MyDownProBar  extends DownloadProgressBar
    {
        private var progressText:TextField;
       
        private var msgText:TextField;
   
        public function MyDownProBar()
        {  
            super();
            // Configure the TextField for progress messages.
            progressText = new TextField();
            progressText.x = 10;   
            progressText.y = 90;
            progressText.width = 400;
            progressText.height = 400;
       
            addChild(progressText);
       
            // Configure the TextField for the final message.
            msgText = new TextField();
            msgText.x = 10;
            msgText.y = 10;
            msgText.width = 400;
            msgText.height = 75;
           
            addChild(msgText);
        }
   
        override public function set preloader(preloader:Sprite):void {
            preloader.addEventListener(
                ProgressEvent.PROGRESS, myHandleProgress);  
            preloader.addEventListener(
                Event.COMPLETE, myHandleComplete);

            preloader.addEventListener(
                FlexEvent.INIT_PROGRESS, myHandleInitProgress);
            preloader.addEventListener(
                FlexEvent.INIT_COMPLETE, myHandleInitEnd);
        }
   
        private function myHandleProgress(event:ProgressEvent):void {
            progressText.appendText("\n" + "Progress l: " +
                event.bytesLoaded + " t: " + event.bytesTotal);
        }
   
        private function myHandleComplete(event:Event):void {
            progressText.appendText("\n" + "Completed");
        }
   
        private function myHandleInitProgress(event:Event):void {
            progressText.appendText("\n" + "App Init Start");
        }
   
        // Event listeners for the FlexEvent.INIT_COMPLETE event.
        private function myHandleInitEnd(event:Event):void {
            msgText.appendText("\n" + "App Init End");
           
            var timer:Timer = new Timer(2000,1);
            timer.addEventListener(TimerEvent.TIMER, dispatchComplete);
            timer.start();
        }
       
        // Event listener for the Timer to pause long enough to
        // read the text in the download progress bar.
        private function dispatchComplete(event:TimerEvent):void {
            dispatchEvent(new Event(Event.COMPLETE));
        }
    }
}
2.加载swf的loading 效果图:

flex3自定义DownloadProgressBar

package com
{
import flash.display.Sprite;
import flash.events.Event;
import flash.events.ProgressEvent;
import flash.events.TimerEvent;
import flash.net.URLRequest;
import flash.utils.Timer;

import mx.events.FlexEvent;
import mx.preloaders.IPreloaderDisplay;

public class MyDownloadProgressBarSWF extends Sprite
        implements IPreloaderDisplay
    {
        // Define a Loader control to load the SWF file.
        private var dpbImageControl:flash.display.Loader;
   
        public function MyDownloadProgressBarSWF() {  
            super();       
        }
       
        // Specify the event listeners.
        public function set preloader(preloader:Sprite):void {
            // Listen for the relevant events
            preloader.addEventListener(
                ProgressEvent.PROGRESS, handleProgress);
            preloader.addEventListener(
                Event.COMPLETE, handleComplete);
   
            preloader.addEventListener(
                FlexEvent.INIT_PROGRESS, handleInitProgress);
            preloader.addEventListener(
                FlexEvent.INIT_COMPLETE, handleInitComplete);
        }
       
        // Initialize the Loader control in the override
        // of IPreloaderDisplay.initialize().
        public function initialize():void {
            dpbImageControl = new flash.display.Loader();      
            dpbImageControl.contentLoaderInfo.addEventListener(
                Event.COMPLETE, loader_completeHandler);
            dpbImageControl.load(new URLRequest("com/common/core/loading2.swf"));        
        }

        // After the SWF file loads, set the size of the Loader control.
        private function loader_completeHandler(event:Event):void
        {
            addChild(dpbImageControl);
            dpbImageControl.width = 50;
            dpbImageControl.height= 50;
            dpbImageControl.x = 100;
            dpbImageControl.y = 100;
        }  
       
        // Define empty event listeners.
        private function handleProgress(event:ProgressEvent):void {
        }
       
        private function handleComplete(event:Event):void {
        }
       
        private function handleInitProgress(event:Event):void {
        }
       
        private function handleInitComplete(event:Event):void {
            var timer:Timer = new Timer(2000,1);
            timer.addEventListener(TimerEvent.TIMER, dispatchComplete);
            timer.start();     
        }
   
        private function dispatchComplete(event:TimerEvent):void {
            dispatchEvent(new Event(Event.COMPLETE));
        }

        // Implement IPreloaderDisplay interface
   
        public function get backgroundColor():uint {
            return 0;
        }
       
        public function set backgroundColor(value:uint):void {
        }
       
        public function get backgroundAlpha():Number {
            return 0;
        }
       
        public function set backgroundAlpha(value:Number):void {
        }
       
        public function get backgroundImage():Object {
            return undefined;
        }
       
        public function set backgroundImage(value:Object):void {
        }
       
        public function get backgroundSize():String {
            return "";
        }
       
        public function set backgroundSize(value:String):void {
        }
   
        public function get stageWidth():Number {
            return 200;
        }
       
        public function set stageWidth(value:Number):void {
        }
       
        public function get stageHeight():Number {
            return 200;
        }
       
        public function set stageHeight(value:Number):void {
        }
    }
}

mxml中使用
<mx:Application preloader="com.MyDownloadProgressBarSWF"/>

你可能感兴趣的:(ProgressBar)