QueueLoader AS3 rev 5
Posted: September 14, 2007 at 2:30 pmLatest Version Info:
Click here for the current rev
Click here for the usage guide
Also click here for any posts related to the latest changes:
QueueLoader Updates
I've updated QueueLoader once again with some significant enhancements.
- MP3 loading (to a target Sound object)
- Added file access (for swf timeline access, and Bitmap access)
Example code:
import com.hydrotik.utils.QueueLoader; import com.hydrotik.utils.QueueLoaderEvent; //Instantiate the QueueLoader and init vars var _oLoader:QueueLoader = new QueueLoader(); var startX:int = 0; var swfClip:MovieClip; //Draw some progress indicators var itemprog:Shape = new Shape(); itemprog.graphics.beginFill(0x333333, 1); itemprog.graphics.drawRect(0, 0, 1, 2); itemprog.graphics.endFill(); addChild(itemprog); itemprog.x = 10; itemprog.y = 350; var queueprog:Shape = new Shape(); queueprog.graphics.beginFill(0x333333, 1); queueprog.graphics.drawRect(0, 0, 1, 2); queueprog.graphics.endFill(); addChild(queueprog); queueprog.x = 10; queueprog.y = 400; //Run a loop that loads 3 images from the flashassets/images/slideshow folder for (var i:int = 1; i < 4; i++) { //Set up the container var image:Sprite = new Sprite(); image.name = "image_"+i; image.x = startX; addChild(image); //Add a load item to the loader _oLoader.addItem(prefix("") + "flashassets/images/slideshow/"+i+".jpg", image, {title:"Image "+i}); //Move the image over a bit startX = startX + 50; } //Let's add an external swf file! var swf:MovieClip = new MovieClip(); swf.x = 353; swf.y = 152; swf.name = "swf"; addChild(swf); _oLoader.addItem(prefix("") + "flashassets/swf/externalswf.swf", swf, {title:"swf"}); //Let's add a sound! var sound:Sound = new Sound(); //sound.play(); _oLoader.addItem(prefix("") + "flashassets/mp3/jens_buchert.mp3", sound, {title:"mp3"}); //Add event listeners to the loader _oLoader.addEventListener(QueueLoaderEvent.QUEUE_START, onQueueStart, false, 0, true); _oLoader.addEventListener(QueueLoaderEvent.ITEM_START, onItemStart, false, 0, true); _oLoader.addEventListener(QueueLoaderEvent.ITEM_PROGRESS, onItemProgress, false, 0, true); _oLoader.addEventListener(QueueLoaderEvent.ITEM_INIT, onItemInit,false, 0, true); _oLoader.addEventListener(QueueLoaderEvent.ITEM_ERROR, onItemError,false, 0, true); _oLoader.addEventListener(QueueLoaderEvent.QUEUE_PROGRESS, onQueueProgress, false, 0, true); _oLoader.addEventListener(QueueLoaderEvent.QUEUE_INIT, onQueueInit,false, 0, true); //Run the loader _oLoader.execute(); //Listener functions function onQueueStart(event:QueueLoaderEvent):void { trace(">> "+event.type); } function onItemStart(event:QueueLoaderEvent):void { trace("\t>> "+event.type, "item title: "+event.title); } function onItemProgress(event:QueueLoaderEvent):void { trace("\t>> "+event.type+": "+[" percentage: "+event.percentage]); itemprog.width = 150 * event.percentage; item.text = "Item Progress: "+Math.round(event.percentage * 100)+ "%" } function onQueueProgress(event:QueueLoaderEvent):void { trace("\t>> "+event.type+": "+[" queuepercentage: "+event.queuepercentage]); queueprog.width = 150 * event.queuepercentage; queue.text = "Queue Progress: "+Math.round(event.queuepercentage * 100)+ "%" } function onItemInit(event:QueueLoaderEvent):void { trace("\t>> "+event.type, "item title: "+event.title); //If the file is a swf lets store a reference to it. if(event.filetype == QueueLoader.FILE_SWF){ trace(event.file); swfClip = event.file; } } function onItemError(event:QueueLoaderEvent):void { trace("\n>>"+event.message+"\n"); } function onQueueInit(event:QueueLoaderEvent):void { trace("** "+event.type); // play the sound! sound.play(); // play the swf! event.file.gotoAndPlay(2); } //function for simply adds a filepath prefix function prefix(serverPath:String):String { var playerType:String = Capabilities.playerType; if (playerType == "External" || playerType == "StandAlone") { return "../"; } else { return serverPath; } }
Here are the current QueueLoader event variables for retrieving data as well as filetype constants:
// Queue item start event public static var ITEM_START:String = "itemStart"; // Queue item start event public static var ITEM_PROGRESS:String = "itemProgress"; // Queue item init/complete event public static var ITEM_INIT:String = "itemInit"; // Queue item error event public static var ITEM_ERROR:String = "itemError"; // Queue start event public static var QUEUE_START:String = "queueStart"; // Queue progress event public static var QUEUE_PROGRESS:String = "queueProgress"; // Queue init/complete event public static var QUEUE_INIT:String = "queueInit"; // The queue item container public var targ:*; // The queue item title public var title:String = ""; // The queue item filetype (QueueLoader.FILE_IMAGE, QueueLoader.FILE_SWF, QueueLoader.FILE_AUDIO) public var filetype:int; // The queue item loaded file (ie if you load a swf, this would reference its Timeline) public var file:*; // The queue item url/path public var path:String; // The queue item bytes loaded public var bytesLoaded:Number = -1; // The queue item total file size public var bytesTotal:Number = -1; // The queue item percentage loaded public var percentage:Number = 0; // The total queue percentage loaded public var queuepercentage:Number = 0; // The current queue item index public var count:int; // The remaining queue length public var length:int; // The total queue length public var max:int; // The queue items width public var width:Number; // The queue item height public var height:Number; // unused public var message:String = ""; // unused public var dataObj:Object = null;
A more recent version of this code has been posted! Go HERE