# Preloader using the loadSWF Class

**URL:** <https://forum.kirupa.com/t/preloader-using-the-loadswf-class/267680>\
**Category:** flash\
**Created:** [August 4, 2008, 6:10pm UTC](https://forum.kirupa.com/t/preloader-using-the-loadswf-class/267680 "2008-08-04T18:10:50Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![Garfty](https://avatars.discourse-cdn.com/v4/letter/g/8baadc/32.png) [@Garfty](https://forum.kirupa.com/u/Garfty)\
**Post date:** [August 4, 2008, 6:10pm UTC](https://forum.kirupa.com/t/preloader-using-the-loadswf-class/267680/1 "2008-08-04T18:10:50Z")

</div>

Hi all,

I have recently looked at the Learning Actionscript 3 book, and am loading in seperate SWFs, the value of the loading percent is traced but im just wondering how I would transfer this to a preloader bar which was found on kirupa.

the loadSWF Code is:

```auto
package com.loading
{

    import flash.display.*;
    import flash.events.*;
    import flash.net.URLRequest;

    public class LoadSWF extends Sprite
    {

        private var _loader:Loader;
        private var _loaderInfo:LoaderInfo;
        private var _verbose:Boolean = false;
        private var _loadProgressString:String = "";
        private var _bytesLoaded:Number = 0;
        private var _bytesTotal:Number = 0;

        public function LoadSWF(path:String, verbose:Boolean)
        {
            _verbose = verbose;
            _loader = new Loader();
            //_loader.addEventListener(MouseEvent.CLICK, onClick, false, 0, true);

            _loaderInfo = _loader.contentLoaderInfo;
            _loaderInfo.addEventListener(Event.OPEN, onOpen, false, 0, true);
            _loaderInfo.addEventListener(ProgressEvent.PROGRESS, onProgress, false, 0, true);
            _loaderInfo.addEventListener(HTTPStatusEvent.HTTP_STATUS, onHTTPStatusEvent, false, 0, true);
            _loaderInfo.addEventListener(Event.COMPLETE, onComplete, false, 0, true);
            _loaderInfo.addEventListener(IOErrorEvent.IO_ERROR, onIOError, false, 0, true);
            _loaderInfo.addEventListener(Event.INIT, onInit, false, 0, true);
            _loaderInfo.addEventListener(Event.UNLOAD, onUnloadContent, false, 0, true);

            try
            {
                _loader.load(new URLRequest(path));
            }
            catch (err:Error)
            {
                trace("Unable to load content:
" + err.message);
            }

        }

        //private function onClick(evt:MouseEvent):void
        //{
        // _loader.unload();
        //}

        private function onComplete(evt:Event):void
        {
            _loaderInfo.removeEventListener(Event.OPEN, onOpen);
            _loaderInfo.removeEventListener(ProgressEvent.PROGRESS, onProgress);
            _loaderInfo.removeEventListener(HTTPStatusEvent.HTTP_STATUS, onHTTPStatusEvent);
            _loaderInfo.removeEventListener(Event.COMPLETE, onComplete);
            _loaderInfo.removeEventListener(IOErrorEvent.IO_ERROR, onIOError);

            addChild(_loader);
            dispatchEvent(new Event("displayObjectLoaded"));
        }
        private function onProgress(evt:ProgressEvent):void
        {
            var loadPercent:int = Math.round((evt.bytesLoaded/evt.bytesTotal)*100);
            _bytesLoaded = evt.bytesLoaded;
            _bytesTotal = evt.bytesTotal;
            _loadProgressString = (loadPercent + " % loaded: " + _bytesLoaded + " bytes of " + _bytesTotal + " total bytes");
            if (_verbose)
            {
                trace(_loadProgressString);
            }
        }
        //example getters to return data for use at runtime, rather than just tracing to Output panel

        //use when default string is desired (e.g. status field), once or with repeating event (enter frame, timer, etc.)
        public function get progressString():String
        {
            return _loadProgressString;
        }
        //use when number data is desired (e.g. progress bar), once or with repeating event (enter frame, timer, etc.)
        public function get progressNumberArray():Array
        {
            return [_bytesLoaded,_bytesTotal];
        }

        //if desired, add getter to return info from below. currently diagnostic tools, only tracing to Output panel

        private function onOpen(evt:Event):void
        {
            if (_verbose)
            {
                trace("Loading has begun.");
            }
        }
        private function onHTTPStatusEvent(evt:HTTPStatusEvent):void
        {
            if (_verbose)
            {
                trace("HTTP status code: " + evt.status);
            }
        }

        private function onIOError(evt:IOErrorEvent):void
        {
            if (_verbose)
            {
                trace("A loading error occurred:
", evt.text);
            }
        }

        private function onInit(evt:Event):void
        {
            _loaderInfo.removeEventListener(Event.INIT, onInit);
            //properties of loaded asset now accessable
            if (_verbose)
            {
                trace("Content initialized. Properties:");
                trace(" url:", evt.target.url);
                trace(" Same Domain:", evt.target.sameDomain);
                if (evt.target.contentType == "application/x-shockwave-flash")
                {
                    trace(" SWF Version:", evt.target.swfVersion);
                    trace(" AS Version:", evt.target.actionScriptVersion);
                    trace(" Frame Rate:", evt.target.frameRate);
                }
            }
        }

        private function onUnloadContent(evt:Event):void
        {
            //halt streams in loaded content first
            _loaderInfo.removeEventListener(Event.UNLOAD, onUnloadContent);
            if (_verbose)
            {
                trace("unLoadHandler:
", evt);
            }
        }
    }
}

```

I would like to change the kirupa FLA to run from this class, which has this coding on it

```auto
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
    imageLoadArea.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);
}

```

Any help would be appreciated thanks!!
