Archive for the ‘QueueLoader’ Category

QueueLoaderLite

Updated the code

I’ve stripped down some of the heavier features for an alternate “lite” version for those wishing a bare bones QueueLoader with low file size. QueueLoader will continue to thrive and there are some enhancements to the regular version that will be made shortly.

The lite version is focused exclusively on image and swf asset loading. Application Domain/Loader Context is still there so you can load other items within a swf and have access to its class references in the library. I will add another guide page on the Google page shortly. I’m including all the listening function in the example below just so you can see it in action, but any/all of them can be removed. More examples and documentation on this version to come, but in the meantime… Basic usage:

import com.hydrotik.utils.QueueLoaderLite;
import com.hydrotik.utils.QueueLoaderLiteEvent;

var qlLoader:QueueLoaderLite = new QueueLoaderLite();

var imageContainer:Sprite = new Sprite();
addChild(imageContainer);
imageContainer.name = “image”;

qlLoader.addItem(“../flashassets/images/slideshow/1.jpg”, imageContainer, {title:“image”});

qlLoader.addEventListener(QueueLoaderLiteEvent.QUEUE_START, onQueueStart, false, 0, true);
qlLoader.addEventListener(QueueLoaderLiteEvent.ITEM_START, onItemStart, false, 0, true);
qlLoader.addEventListener(QueueLoaderLiteEvent.ITEM_PROGRESS, onItemProgress, false, 0, true);
qlLoader.addEventListener(QueueLoaderLiteEvent.ITEM_COMPLETE, onItemComplete, false, 0, true);
qlLoader.addEventListener(QueueLoaderLiteEvent.ITEM_ERROR, onItemError, false, 0, true);
qlLoader.addEventListener(QueueLoaderLiteEvent.QUEUE_PROGRESS, onQueueProgress, false, 0, true);
qlLoader.addEventListener(QueueLoaderLiteEvent.QUEUE_COMPLETE, onQueueComplete, false, 0, true);

qlLoader.execute();

function onQueueStart(event : QueueLoaderLiteEvent):void {
        trace(“** “+event.type);
}

function onItemStart(event : QueueLoaderLiteEvent):void {
        trace(“>> “+event.type, “item title: “+event.title);
}

function onItemProgress(event : QueueLoaderLiteEvent):void {
        trace(\t>> “+event.type+“: “+[” percentage: “+event.percentage]);
}

function onItemComplete(event : QueueLoaderLiteEvent):void {
        trace(“>> name: “+event.title + ” event:” + event.type+” - “+[“target: “+event.targ, “w: “+event.width, “h: “+event.height]+\n);

}

function onItemError(event : QueueLoaderLiteEvent):void {
        trace(“>> name: “+event.title + ” event:” + event);
}

function onQueueProgress(event : QueueLoaderLiteEvent):void {
        trace(\t>> “+event.type+“: “+[” queuepercentage: “+event.queuepercentage]);
}

function onQueueComplete(event : QueueLoaderLiteEvent):void {
        trace(“** “ + event.type);
}

And for instantiating library assets in an external swf library:

import com.hydrotik.utils.QueueLoaderLite;
import com.hydrotik.utils.QueueLoaderEventLite;

var addedDefinitions:LoaderContext = new LoaderContext();
addedDefinitions.applicationDomain = ApplicationDomain.currentDomain;

var qlLoader:QueueLoaderLite = new QueueLoaderLite(false, addedDefinitions);

var soundSWF = new MovieClip();
soundSWF.name = “externalSounds”;
addChild(soundSWF);

var soundChannel:SoundChannel = new SoundChannel();

qlLoader.addItem(prefix(“”) + “flashassets/swf/externalsounds.swf”, soundSWF});
qlLoader.addEventListener(QueueLoaderLiteEvent.QUEUE_COMPLETE, onQueueComplete,false, 0, true);
qlLoader.execute();

function onQueueComplete(event:QueueLoaderLiteEvent):void {
        trace(“** “+event.type);
        var Loop1Reference:Class = getDefinitionByName(“Loop1″) as Class;
        var loop1:Sound = new Loop1Reference();
        soundChannel = loop1.play();
}


QueueLoaderLite Source

Tuesday, March 11th, 2008

QueueLoader AS3 rev27

Turns out when I modify the wiki, the revision number jumps since the wiki is considered a commit. Makes sense since you can edit the wiki locally and upload to the server.

Updates:
Modified the FLV loading so it doesn’t use the Playback component source. It does simple streaming, event.file returns the NetStream Object. No more issues of having to link, import, or embed the component code.

Also included is Jesse Graupmann’s suggestion and implementation of prioritizing and bundling of sub loaders. Basically it let’s you do this:

_qLoader.addItem(“firstQueueLoaderQueueLoader”, _oLoader, { mimeType:QueueLoader.FILE_QUEUE});

Currently it requires setting the MIME type manually, but soon it will be set up so that if QueueLoader is in the path, it will recognize it as well. More enhancements and examples of this feature to come.


Click here for the current rev

Thursday, December 13th, 2007

QueueLoader AS3 rev 18

Sorry for the version jump. When I added flv and supporting files the SVN jumped up a few numbers. Regardless I am going to stop posting examples directly here on the blog with the exception of updates and new features worth noting. I think it’s also an easy way for people to communicate questions, comments, concerns, etc. As far as usage, downloads, etc., I think it will be easier for me to keep all the necessary info on the google project site then retroactively updating my previous posts.

Important Updates
QUEUE_INIT and ITEM_INIT have been changed to reflect the internal structure. They are now QUEUE_COMPLETE and ITEM_COMPLETE. Sorry if this causes confusion but it needed to be changed at some point. :)

FLV support has been added finally. The event.file var in the callback will return a VideoPlayer Object for video control.

I did some other utilitarian and formatting tasks event meta info, debugging organization with parent level accessibility, etc.

Click here for the current rev

Click here for the usage guide

Click here for the change log

Monday, December 10th, 2007

QueueLoader AS3 rev11 + Stable

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

Wednesday, December 5th, 2007

QueueLoader AS3 Guide (rev10)

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

Here are some different ways to use QueueLoader.

Basic Loading

import com.hydrotik.utils.QueueLoader;
import com.hydrotik.utils.QueueLoaderEvent;

var _oLoader:QueueLoader = new QueueLoader();
var img = new Sprite();
addChild(img);
_oLoader.addItem(“images/image1.jpg”), img, {title:“Image “});
_oLoader.execute();

Load Monitoring

import com.hydrotik.utils.QueueLoader;
import com.hydrotik.utils.QueueLoaderEvent;

var _oLoader:QueueLoader = new QueueLoader();
var img1 = new Sprite();
addChild(img1);
_oLoader.addItem(“images/image1.jpg”), img1, {title:“Image 1″});
var img2 = new Sprite();
addChild(img2);
_oLoader.addItem(“images/image2.jpg”), img2, {title:“Image 2″});

_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);
_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]);
}

function onQueueProgress(event:QueueLoaderEvent):void {
        trace(\t>> “+event.type+“: “+[” queuepercentage: “+event.queuepercentage]);
}

function onItemInit(event:QueueLoaderEvent):void {
        trace(\n>>”+event.message+\n);
}

function onItemError(event:QueueLoaderEvent):void {
        trace(\n>>”+event.message+\n);
}

function onQueueInit(event:QueueLoaderEvent):void {
        trace(\n>>”+event.message+\n);
}

Manually specifying a MIME type

import com.hydrotik.utils.QueueLoader;
import com.hydrotik.utils.QueueLoaderEvent;

var _oLoader:QueueLoader = new QueueLoader();
var img = new Sprite();
addChild(img);
_oLoader.addItem(“images/image1.jpg”), img, {title:“Image “, mimeType:QueueLoader.FILE_IMAGE});
_oLoader.addEventListener(QueueLoaderEvent.QUEUE_INIT, onQueueInit,false, 0, true);
_oLoader.execute();

Loading XML

import com.hydrotik.utils.QueueLoader;
import com.hydrotik.utils.QueueLoaderEvent;

var _oLoader:QueueLoader = new QueueLoader();
var _xml:XML;

_oLoader.addItem(“includes/admin/test.xml”, null, {title:“XML”});
_oLoader.addEventListener(QueueLoaderEvent.ITEM_INIT, onItemInit,false, 0, true);
_oLoader.execute();

function onItemInit(event:QueueLoaderEvent):void {
        trace(\t>> XML: “+event.type, “item title: “+event.title);
        if(event.filetype == QueueLoader.FILE_XML){
                _xml = new XML(event.file);
        }
}

Loading CSS

import com.hydrotik.utils.QueueLoader;
import com.hydrotik.utils.QueueLoaderEvent;

var _oLoader:QueueLoader = new QueueLoader();
var _css:StyleSheet = new StyleSheet();

_oLoader.addItem(“includes/admin/style.css”, null, {title:“CSS”});
_oLoader.addEventListener(QueueLoaderEvent.ITEM_INIT, onItemInit,false, 0, true);
_oLoader.execute();

function onItemInit(event:QueueLoaderEvent):void {
        if(event.filetype == QueueLoader.FILE_CSS){
                trace(\t>> CSS: “+event.type, “item title: “+event.title);
                _css.parseCSS(event.file);
        }
}

Drawing the frames of an external SWF to Bitmap Objects in an Array

import com.hydrotik.utils.QueueLoader;
import com.hydrotik.utils.QueueLoaderEvent;

var externalImageBitmapContainer:Bitmap = new Bitmap();
addChild(externalImageBitmapContainer);
var externalImageContainer:Sprite = new Sprite();
addChild(externalImageContainer);

var _oLoader:QueueLoader = new QueueLoader();
_oLoader.addItem(“flashassets/swf/externalimages.swf”, externalImageContainer, {title:“externalimages”, drawFrames:true});
_oLoader.addEventListener(QueueLoaderEvent.QUEUE_INIT, onQueueInit,false, 0, true);
_oLoader.execute();

function onQueueInit(event:QueueLoaderEvent):void {
        trace(“** “+event.type);
        // This passes a Bitmap object of the 2nd frame
        // in the external swfstored in bmArray
        externalImageBitmapContainer.bitmapData = event.bmArray[1];
}

Accessing Class references in an externally loaded SWF

import com.hydrotik.utils.QueueLoader;
import com.hydrotik.utils.QueueLoaderEvent;

var addedDefinitions:LoaderContext = new LoaderContext();
addedDefinitions.applicationDomain = ApplicationDomain.currentDomain;

var _oLoader:QueueLoader = new QueueLoader(false, addedDefinitions, true);

var soundSWF = new MovieClip();
soundSWF.name = “externalSounds”;
addChild(soundSWF);

var soundChannel:SoundChannel = new SoundChannel();

_oLoader.addItem(prefix(“”) + “flashassets/swf/externalsounds.swf”, soundSWF, {title:“sounds”, drawSWF:false, mimeType:QueueLoader.FILE_SWF});
_oLoader.addEventListener(QueueLoaderEvent.QUEUE_INIT, onQueueInit,false, 0, true);
_oLoader.execute();

function onQueueInit(event:QueueLoaderEvent):void {
        trace(“** “+event.type);
        var Loop1Reference:Class = getDefinitionByName(“Loop1″) as Class;
        var loop1:Sound = new Loop1Reference();
        soundChannel = loop1.play();
}

Adding items on the fly

import com.hydrotik.utils.QueueLoader;
import com.hydrotik.utils.QueueLoaderEvent;

var _oLoader:QueueLoader = new QueueLoader();
var imageContainer:Sprite = new Sprite();
addChild(imageContainer);

var _xml:XML;

_oLoader.addItem(“includes/admin/test.xml”, null, {title:“XML”, mimeType:QueueLoader.FILE_XML});
_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);
_oLoader.execute();

function onQueueStart(event:QueueLoaderEvent):void {
        trace(\t>> “+event.type, “item title: “+event.title);
}

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]);
}

function onQueueProgress(event:QueueLoaderEvent):void {
        trace(\t>> “+event.type+“: “+[” queuepercentage: “+event.queuepercentage]);
}

function onItemInit(event:QueueLoaderEvent):void {
        trace(\t>> “+event.type, “item title: “+event.title);
       
        if (event.filetype == QueueLoader.FILE_XML) {
                _xml = new XML(event.file);
                var imageList:XMLList = _xml.images.children();
               
                for (var i:int = 0; i < imageList.length(); i++) {
                        var img = new Sprite();
                        imageContainer.addChild(img);
                        _oLoader.addItem(imageList[i].attribute(“src”), img, {title:“Image “+i});
                }
        }
}

function onItemError(event:QueueLoaderEvent):void {
        trace(\n>>”+event.message+\n);
}

function onQueueInit(event:QueueLoaderEvent):void {
        trace(\t>> “+event.type, “item title: “+event.title);
}

This covers most of the features in the current rev. More to come!

Tuesday, December 4th, 2007

QueueLoader AS3 rev 10

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

Rev 10 Update
You can easily draw the frames of an externally loaded SWF to bitmap objects in an Array which was suggested by Carlos Ulloa. I’m still looking for people to help with rigorous testing and features. Contact me if you are interested.

Tuesday, December 4th, 2007

QueueLoader + Stable Rev

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

Tuesday, November 20th, 2007

QueueLoader AS3 rev 8

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

There have been a number of valid requests and great suggestions for enhancement, so I’m inviting help in the hopes of making QueueLoader better and better. Contact me there if you are interested in helping:) I’ve removed the examples thanks to the wordpress update and new editor screwing up the code formatting. I got it under control now, but you can see the example in the source. Download the stable file in the most recent post here, or check out the new features in development on in the svn.

Sunday, November 11th, 2007

AS3 + XMLLoader + CSSLoader

Someone suggested the great idea of adding CSS and XML loading to QueueLoader. I plan on doing this, but first I thought I’d share a method I use to load those two items.

I personally tend to load XML first (I put the path to the css in the XML file), then I load the CSS, and then I start my QueueLoader. The reason for this is that I almost always store the paths for QueueLoader in the XML. If that’s a method you tend to follow as well, then these utilities will help if you haven’t built them already.

In the spirit of sequential loading and monitoring, I totally plan on adding this to the next revision. However, I would not suggest setting up a separate QueueLoader just for XML and CSS. If you need to load them separately, here are a couple of utilities for doing that. They will save you a bit of overhead, and are cousins of QueueLoader so they should be brainless to implement.

XMLLoader

import com.hydrotik.utils.XMLLoader;
import com.hydrotik.utils.XMLLoaderEvent;

var xmlLoader:XMLLoader = new XMLLoader(_sAdminPath + xmlFilename);
xmlLoader.addEventListener(XMLLoaderEvent.COMPLETE, onXMLComplete);
xmlLoader.addEventListener(XMLLoaderEvent.ERROR, onXMLError);
xmlLoader.addEventListener(XMLLoaderEvent.PROGRESS, onXMLProgress);

function onXMLError(event:XMLLoaderEvent):void {
    trace(“XMLLoader error: “+event);
}

function onXMLProgress(event:XMLLoaderEvent):void {
    trace(“XMLLoader progress: “+event.percentage);
}

function onXMLComplete(event:XMLLoaderEvent):void {
    xml = event.xml;
}

CSSLoader

import com.hydrotik.utils.CSSLoader;
import com.hydrotik.utils.CSSLoaderEvent;

var cssLoader:CSSLoader = new CSSLoader(_sAdminPath + xmlFilename);
cssLoader.addEventListener(CSSLoaderEvent.COMPLETE, onXMLComplete);
cssLoader.addEventListener(CSSLoaderEvent.ERROR, onXMLError);
cssLoader.addEventListener(CSSLoaderEvent.PROGRESS, onXMLProgress);

function onXMLError(event:CSSLoaderEvent):void {
    trace(“CSSLoader error: “+event);
}

function onXMLProgress(event:CSSLoaderEvent):void {
    trace(“CSSLoader progress: “+event.percentage);
}

function onXMLComplete(event:CSSLoaderEvent):void {
    css = event.css;
}

I didn’t include any fla files in the download, just the packages, since this should be pretty easy to implement. But here’s an example of how I use these before running my main block of code:

private function loadConfigration():void{
    var xmlLoader:XMLLoader = new XMLLoader(_sAdminPath + xmlFilename);
    xmlLoader.addEventListener(XMLLoaderEvent.COMPLETE, onXMLComplete);
    xmlLoader.addEventListener(XMLLoaderEvent.ERROR, onXMLError);
    xmlLoader.addEventListener(XMLLoaderEvent.PROGRESS, onXMLProgress);
}

private function onXMLError(event:XMLLoaderEvent):void {
    trace(“XMLLoader error: “+event)
}

private function onXMLProgress(event:XMLLoaderEvent):void {
    trace(“XMLLoader progress: “+event.percentage)
}

private function onXMLComplete(event:XMLLoaderEvent):void {
    trace(“:: onXMLComplete:”);
    _xml = event.xml;

    var cssLoader:CSSLoader = new CSSLoader(CacheKiller.file(“includes/admin/” + _xml.attribute(“css”), “../”, “/”));
    cssLoader.addEventListener(CSSLoaderEvent.COMPLETE, onCSSComplete);
    cssLoader.addEventListener(CSSLoaderEvent.ERROR, onCSSError);
    cssLoader.addEventListener(CSSLoaderEvent.PROGRESS, onCSSProgress);
}

private function onCSSError(event:CSSLoaderEvent):void {
    trace(“CSSLoader error: “+event)
}

private function onCSSProgress(event:CSSLoaderEvent):void {
    trace(“CSSLoader progress: “+event.percentage)
}

private function onCSSComplete(event:CSSLoaderEvent):void {
    trace(“:: onCSSLoaded:”);
    _css = event.css;
    buildInterface();
}

Pretty simple:) Just runs one after the other then you can run a QueueLoader with loaded items pulled from the XML. Just one way of doing, but like I said I will add css and xml to the next revision.

Thanks to Jesse for the idea!


XMLLoader and CSSLoader Source Rev1

Tuesday, October 30th, 2007

QueueLoader AS3 rev 7 + Garbage Collection + SoundManager

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

First things first. I’ve thrown in an additional utility that may or may not turn into it’s own project. Most likely it will as I hope to add gapless playback of loops, sound mixing, etc. But I’m already getting ahead of myself:) The reason I included my SoundManager utility is to illustrate how easy it is to use the new feature of accessing loaded swf library assets, as well as using it in a more advance management type setting. There’s a lot to cover, but first let me go over the updates I made to this revision.

  • Added a stop() method for stopping the queue. resume() is in the works.
  • Added LoaderContext for accessing the classes and references in QueueLoaded external swf.
  • Added an error dispatch for an undefined target/container.
  • Added a dispose() method for unloading loaded items from memory for Garbage Collection. More on this later.
  • More cleanup and optimization of code

The most significant changes I will go over is with the LoaderContext and dispose() method. The rest are pretty self explanatory.

dispose() + Garbage Collection
This download is a lot heavier in file size as I’ve included some large images to clearly indicate what’s happening with the Garbage Collector. I’m not going to go into too much detail on how Garbage Collection works. Essentially it is the process the Actionscript Virtual Machine uses to free up/dump unused memory. It does this intermittently and during times of low processing load, or when the memory has reached a certain level and needs to flush. To deal with this it is important to null out your variables and use removeChild to remove instances from a Display object. AS3 will retain the object in memory if there is a reference to it anywhere in the code. This can be a pain when trying to track data flow so it’s better to keep this in mind when planning your plan of attack. To learn more about Garbage Collection, check out Grant Skinner’s posts here.

I’ve included monitoring of garbage collection in the source example. System.totalMemory is the property for getting this info. But wait! There are some important things to be aware of.

  • Either there is a bug with System.totalMemory, or with the Loader.unload() method, so you will need to see changes to the GC in the browser.
  • Because of the above issue I have set the publish for local access only, so just make a note
  • System.totalMemory will give you what it says, total memory. So if you have other flash apps open in the browser you will see the memory used for those apps added to your QueueLoader Example. So be sure to close everything out.

When you dispose of a section that has used QueueLoader for loading of assets, you would use dispose() to remove the loaded assets and ready them for Garbage Collection. Lets assume we’ve set up a QueueLoader and it’s already loaded it’s assets, say for an image gallery. Here’s the block of code we would use to set up the QueueLoaded assets and the loader for GC:

_oLoader.dispose();
               
// Delete the QueueLoader containers
while(imageContainer.numChildren > 0){
        imageContainer.removeChildAt(0);
}

_oLoader = null;

You can clearly see this working in the example fla, but you get the idea. On to the next exciting feature…

Accessing externally loaded classes and library assets:
First caveat to this. Sandbox security issues come into play if you are loading things across domains. For this example we are assuming you are loading within the same domain. QueueLoader will do this, but you need to add some extra code. For more on cross scripting go here.

This feature allows you to add Library assets to an external swf, export them for actionscript as classes, and access those classes in your parent swf. This is great for loaded sounds, images, interface widgets, etc. Personally I use a separate swf for each library asset type. This also helps if you want to add a Manager class to one of your external swf files. In this example I added the SoundManager class.

You would do this by adding:

//Definition vars for accessing loaded swf libary classes in this scope
var addedDefinitions:LoaderContext = new LoaderContext();
addedDefinitions.applicationDomain = ApplicationDomain.currentDomain;

// Scope and Instantiate variables
var _oLoader:QueueLoader = new QueueLoader(false, addedDefinitions);

and then once your assets are loaded using QueueLoader you would access them using:

var Loop1Reference:Class = getDefinitionByName(“Loop1″) as Class;
var loop1:Sound = new Loop1Reference();
soundChannel = loop1.play();

I know I’m using code snippets so if it seems unclear, open up the queueloader.fla and you can see all of this in its entirety.

SoundManager
SoundManager is a class I added that may or may not be used in conjunction with QueueLoader. It’s in its infancy so this class is pretty straight forward. Basically what is happening is on the first frame of the externalsounds.swf there is code to add the library assets intro the SoundManager.

import com.hydrotik.utils.SoundManager;

SoundManager.getInstance().addItem(new Glitch1());
SoundManager.getInstance().addItem(new Glitch2());
SoundManager.getInstance().addItem(new Loop1());

Now anywhere in your application you can now play these sounds. Check out the source for more info.

My thanks to those who have commented and brought issues to my attention. Helps me to enhance this class and make it more powerful for simple as well as advanced usage. I always welcome your constructive criticism and suggestions for upcoming revisions. Please keep this in mind though. QueueLoader is a utility, and most of the control and administrative functions should be handled outside of the utility in its parent class.

If you’re using QueueLoader on a project or have used it, I’d love to hear about it!

Enjoy! :)
Donovan


A more recent version of this code has been posted! Go HERE

Monday, October 29th, 2007

phentermine rxlist generic information does phentermine show on drug test canine arthritis phentermine contents of phentermine phentermine pictures dosages order phentermine hcl cod phentermine and mood iwant to purchase phentermine phentermine for sale in usa lose weight fast diet phentermine pill same day shipping on phentermine phentermine doctor weight loss ga cheapest phentermine 37.5x90 phentermine in green and white capsule phentermine and no presciption adjustable bed phentermine q searchers com phentermine show up in drug test drug phentermine side effects phentermine shipped to la 107 30t 37.5mg 64 90t phentermine phentermine st louis doctor cheap prescription diet pill phentermine 37.5mg phentermine nc reliable fast phentermine phentermine pictures phentermine order cash on delivery weight control center phentermine cheaper phentermine online buy prescription phentermine lannett phentermine paypal phentermine phentermine hcl prescription online phentermine menu buy phentermine mg phentermine 37.5 free shipping medical consult difference of phentermine buy domain phentermine tiki com phentermine cheapest overnight cod phentermine without prescription and energy pill online mexican pharmacy phentermine tenuate phentermine 30mg eon labs buy online phentermine information buy phentermine online about us cheap phentermine 15mg indian pharmacy online phentermine phentermine induced psychosis boards diet googlepray phentermine pill phentermine pharm pills phentermine without hoodia cheapest phentermine online cod burn desert ephedra phentermine fast phentermine delivery no prescription buy phentermine no perscritpion phentermine to arkansas buy phentermine cheaper cod delivery online phentermine lowest price on phentermine phentermine no prescription discount cheap diet pills phentermine buy phentermine online usa licensed pharmacy phentermine in the uk c cheap d o phentermine does phentermine test positive for amphetamines phentermine diet pills need doctor prescription phentermine prozac umaxppc phentermine adipex diet pill prescription diet inexpensive phentermine pill cheapest phentermine price phentermine philadelphia phentermine 37.5 and us pharmacy phentermine what doese it do information weight loss drug phentermine adipex buy phentermine without presription phentermine lasix straterra non rx required where can i order phentermine phentermine pharmacies on line buy phentermine blue pill 37.5 mg phentermine with no rx phentermine 37.5 black and green re prozac and phentermine anyone online phentermine cod prices buy phentermine online ritalin order phentermine 37.5x90 diet pill over the counter phentermine phentermine 30 mg getting phentermine online cheapest phentermine onine phentermine using c o d phentermine use cheapest phentermine prescriptions cheap phentermine phentermine to ky phentermine no prescri hr style bariatric clinic phentermine delivery florida online pharmacy phentermine phentermine without precription line order phentermine phentermine 37 5mg order online online adipex meridia phentermine prescription viagra phentermine rx online consult price phentermine where to purchase phentermine diet pills phentermine no prescription required online consultation 3b phentermine hemmorhoids and phentermine phentermine chest pain phentermine 37 5 order medication india generic phentermine buy phentermine weight loss pill phentermine purchase with money order buy cheapest phentermine place phentermine online no prescription order phentermine by phone no pres online pharmecies that sell phentermine phentermine hcl ultimate phentermine hcl data phentermine hcl symtoms re phentermine purchase phentermine overnight shipping online usa pharmacy phentermine 90 count internet phentermine phentermine fastin phentermine long term consequences phentermine no prior buy online phentermine xenical purephentermine bipolar phentermine us approved pharmacies phentermine 37.5 mg tab 90 search results phentermine no prescriptions phentermine no prior 30 mg phentermine 37.5mg purchase without a script phentermine side effects irregular menstruation phentermine w free consultation phentermine cod delievery low prices on phentermine 37.5 cheap phentermine offer cash on delivery 30 mg phentermine picture of phentermine 37.5 no prescripton e pharmacies phentermine can phentermine be shipped to florida phentermine without doctor perscription phentermine buy online with no prescription phentermine no prescription usa phentermine cod online pills phentermine 30mg without doctor prescription phentermine no prescripti phentermine obesity strong find cheap on line phentermine pills cheap phentermine without phentermine and psychosis iowa phentermine is adipex phentermine t order phentermine cash on delivery phentermine testimonials hack phentermine india phentermine phentermine testamonials phentermine by mastercard computer over phentermine phentermine no prescription european phentermine online no credit card adipex vs phentermine purephentermine 3 58 online phentermine purchase diet phentermine lifeline phentermine pay with cod carrie carmichael phentermine phentermine phentermine online us licensed pharmacies phentermine 90 count for under $150 case eon lab liability phentermine product need phentermine without dr prescription phentermine order cheap cardizem cd actos phentermine norvasc buy phentermine from study trial erope domain phentermine phentermine and steroids overseas cheap phentermine no prescription nevada coop phentermine site abuse phentermine phentermine phentramine online prescription order cheap phentermine overnight delivery buying real phentermine on the internet phentermine blue 30mg 30 caps reviews buy phentermine no prior prescription 37.5 discount phentermine buy generic phentermine buy phentermine prozac dr mcclellan crosby phentermine phentermine testimonails phentermine no script fedex overnight online phentermine xenical phentermine sites that accept mastercard best online pharmacy phentermine no prescribtion phentermine phentermine on medications webpark pl order phentermine without prescription ship overnight forum phentermine carisoprodol 30 ml phentermine no script adipex cheapest diet phentermine pill phentermine e bay drug reactions between phentermine and metabalife addiction drug online order phentermine phentermine results online pharmacy phentermine low cost get phentermine prescription phentermine and online prescriptions phentermine no processing fees buy phentermine 37.5 blue pill 4.01 online phentermine purchase cheap phentermine at vcezaebis org phentermine vs phendimetrazine phentermine and potassium meridia xenical and phentermine buying phentermine phentermine b12 injections amino acids phentermine buy order phentermine without the rx phentermine no prescription usa pharmacy selling phentermine busted ad pharmacy charges phentermine testicle swelling fact phentermine phentermine buy uk order phentermine 37.5 mg online cheapest phentermine without a prescription phentermine red and white pill phentermine online without precription phentermine green and white capsule picutres phentermine and ups phentermine incrediants phentermine us pharmacy order phentermine without doctors prescription bay phentermine index soma phentermine phentermine sent overnight ephedra phentermine phentermine 375 cod online phentermine buy phentermine site phentermine with master card phentermine prescription online physician phentermine no prescription us effects long phentermine side term licenced pharmacy phentermine drug testing phentermine herbal phentermine review wesites selling no perscription phentermine most successful ebook diet phentermine pill phentermine and celexa phentermine no dr no docter consultation phentermine phentermine phentermine information from drugs com discount generic phentermine effect nose phentermine runny side buy discount phentermine no prescription discounts for phentermine buy phentermine weight actavis mfg phentermine 30 mg phentermine and online prescriptions and physician phentermine online at cms phentermine mg at cms green white phentermine capsules phentermine ships to usa phentermine and healthy weight loss phentermine causes bad breath buy online phentermine start immediately phentermine add phentermine without prescription pharmacy online phentermine suspension phentermine 37.5 diet pills phentermine broker online in ky phentermine want to buy phentermine online buy cheapest cod phentermine site cash on delivery for phentermine zyrtec foradil phentermine evista 3pm cheap phentermine phentermine 37.5 90 $89 mastercard is phentermine stronger than didrex bontril phentermine pravachol phentermine and no prior and overnight buy phentermine online cheap phentermine prescription phentermine op ordering guaranteed lowest prices phentermine diet pal pay phentermine pill on line prescription for phentermine phentermine confidential phentermine bakersfield 2nd day fedex phentermine phentermine 30mg no prescription cheap phentermine pills pharmacy online buy phentermine from the united kingdom picture of phentermine pills forums phentermine cheapest prices phentermine 37.5 no prescription phentermine licensed physician cheap phentermine with fr phentermine presciption diet pills phentermine no doctor call bariatric facility and perscribed phentermine phentermine on line with out prescription phentermine pills break in half phentermine 37.5 $93 side effects of phentermines buy phentermine for less phentermine erection help phentermine 37.5 without physician phentermine 2007 adipex phentermine vs the offical site pharmacy phentermine phentermine 30 mg capsules 37 effects phentermine side pharmacy online phentermine online description price phentermine success story gt phentermine hci no prescription us pharmacy phentermine for weight loss online pharmacy canadian pharmacy for phentermine phentermine lortab online birth defects and phentermine use accepting cod pharmacy phentermine custom phentermine phentermine equivalents phentermine no prescription mexico phentermine prescription no consultation herbal phentermine diet drugs phentermine phentermine didrex 37.5 tablets phentermine without a perscription phentermine supplier phentermine and sex phentermine direct net contact phentermine site travel phentermine 37.5 tablets no prescription phentermine sell phentermine in hair follicle drug test phentermine tablets online prescription consultation ingredients in phentermine didrex didrex and phentermine di buy phentermine in florida buy cheap phentermine here phentermine manic depression keyword phentermine 37.5mg buy phentermine no phentermine prescription prior works as good as phentermine phentermine hydrochloride us licensed pharmacies phentermine fear of pills phentermine buy cheap online phentermine 37.5 no prescription overnight delivery comment info personal phentermine remember phentermine online no prior prescription cheap online phentermine price fioricet phentermine shipping no rx phentermine 37.5 90 150 phentermine usa pharmacy ativan phentermine online no dr approval no prescription required phentermine diet phentermine phentermine phentermine mail order cheap phentermine online pharmacy online buy phentermine in stock here phentermine amphetamines search results discount phentermine order phentermine no physician no rx for phentermine phentermine no prior prescription phentramine diet pills online no prescription phentermine phentermine life in the system cheapest diet phentermine pill overnight phentermine with drs consult health career diet phentermine pill buy phentermine res phentermine phentamine cheapest phentermine us licensed pharmacies buy phentermine cash delivery phentermine rankings buy phentermine 37.5 90 phentermine overprescribing phentermine hydroc first approved phentermine cheap phentermine 37 5 phentermine buy on line overnight order phentermine online use mastercard phentermine soma online pharmacy phentermine site effects by movable phentermine powered type phentermine online overnight prescription phentermine great search phentermine hydrochloride pdr discount phentermine no prescription free shipping phentermine from pakistan phentermine cod no rx needed phentermine kosmix topic page online order phentermine uk no script phentermine best price phentermine shipped cod best online pharmacy no prescription meds phentermine phentermine with out doctor phentermine ssri low cholesterol diet buy phentermine phentermine review online pills huge discounts cheap cod phentermine 37.5mg cheap phentermine phentermine us pharmacys online diet pill called phentermine cheap phentermine on line phentermine weight loss success stories phentermine best price online purchase phentermine no tx phentermine heart palpitations phentermine 37.5 mg no perscription 1 134 phentermine cheap phentermine taking cheap phentermine low price on pills generic for adipex p phentermine hcl canadian pharmacies for phentermine phentermine orders phentermine as a pink pill lowest price phentermine with free shipping phentermine usa pharmacy fda buy phentermine adipex-p online phentermine with no prescription of physician phentermine high pulse 37.5 90 phentermine pill phentermine 37.5 mg pills e scripts phentermine fast shipping for phentermine cheap mg phentermine phentermine under $1.00 per pill phentermine online suppliers phentermine no prescriptions sat delivery ordering 30mg phentermine cheapest price on phentermine 24 hour phentermine no prescription phentermine phentermine pillstore zdravi online pharmacies phentermine no prescription phentermine blue and clear buy phentermine with no prescripton delivered phentermine phentermine drug phentermine groups ingredient phentermine phentermine online form can phentermine cause edema weight loss phentermine cardinal health diet phentermine pill deine nachricht phentermine site florida pharmacy phentermine 90.00 phentermine what's in phentermine what does phentermine look like phentermine yellow without doctor script phentermine doctor san diego phentermine with usa doctors consult phentermine and prozac for weight loss phentermines buy online pal pay phentermine phentermine online pay with mastercard articles on phentermine phentramin exciting new alternative to phentermine phentermine information from drugs phentermine with no persciption buy phentermine 37.5 90ct for $90