Archive for September 14th, 2007

QueueLoader AS3 rev 5

Latest Version Info:
Click here for the current rev

Click here for the usage guide

Click here for the change log

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(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:

// 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

Friday, September 14th, 2007