QueueLoader AS3 rev 5
Latest 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.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(0×333333, 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(0×333333, 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:
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
Friday, September 14th, 2007