My favorites | Sign in
Project Logo
                
Search
for
Updated Oct 29, 2008 by dono...@hydrotik.com
Labels: Featured
QueueLoaderGuide  
QueueLoader usage guide

QueueLoader Guide

Overall Monitoring/Basic Example

// Most Basic Example

import com.hydrotik.queueloader.QueueLoader;
import com.hydrotik.queueloader.QueueLoaderEvent;

var _oLoader:QueueLoader = new QueueLoader();

var img:Sprite = new Sprite();
img.name = "image_1";
img.x = 20;
img.y = 20;
img.scaleX = img.scaleY = .075;
addChild(img);

_oLoader.addItem("../flashassets/images/slideshow/1.jpg", img);

_oLoader.addEventListener(QueueLoaderEvent.QUEUE_PROGRESS, onQueueProgress, false, 0, true);
_oLoader.addEventListener(QueueLoaderEvent.QUEUE_COMPLETE, onQueueComplete,false, 0, true);

_oLoader.execute();

function onQueueProgress(event:QueueLoaderEvent):void {
	trace("\t>>onQueueProgress: "+event.queuepercentage);
}

function onQueueComplete(event:QueueLoaderEvent):void {
	trace("** "+event.type);
}

Multiple Items and Event Monitoring Example

// Multiple Items and Event Monitoring Example

import com.hydrotik.queueloader.QueueLoader;
import com.hydrotik.queueloader.QueueLoaderEvent;

var imageContainer:Sprite = new Sprite();
addChild(imageContainer);
imageContainer.x = imageContainer.y = 25;

var _oLoader:QueueLoader = new QueueLoader();

var startX:int = 0;
var startY:int = 0;

for (var i:int = 0; i < 3; i++) {
	var img:Sprite = new Sprite();
	img.name = "image_"+i;
	img.x = startX;
	img.y = startY;
	img.scaleX = img.scaleY = .075;
	imageContainer.addChild(img);
	_oLoader.addItem("../flashassets/images/slideshow/"+(i+1).toString()+".jpg", img, {title:"Image "+i});
	if (startX > 250) {
		startX = startX + 50;
		startY = startY + 100;
	} else {
		startX = startX + 150;
	}
}

_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_COMPLETE, onItemComplete,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_COMPLETE, onQueueComplete,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\t\t>>onItemProgress: "+event.queuepercentage);
}

function onQueueProgress(event:QueueLoaderEvent):void {
	trace("\t>>onQueueProgress: "+event.queuepercentage);
}

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

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


function onQueueComplete(event:QueueLoaderEvent):void {
	trace("** "+event.type);
}

Bitmap Smoothing and Cache Killing Example

// Bitmap Smoothing and Cache Killing Example

import com.hydrotik.queueloader.QueueLoader;
import com.hydrotik.queueloader.QueueLoaderEvent;

var _oLoader:QueueLoader = new QueueLoader();

var img:Sprite = new Sprite();
img.name = "image_1";
img.x = 20;
img.y = 20;
img.scaleX = img.scaleY = 1.25;
addChild(img);

_oLoader.addItem("../flashassets/images/slideshow/1.jpg", img, {title:"Image 1", cacheKiller:true, smoothing:true});

_oLoader.addEventListener(QueueLoaderEvent.QUEUE_PROGRESS, onQueueProgress, false, 0, true);
_oLoader.addEventListener(QueueLoaderEvent.QUEUE_COMPLETE, onQueueComplete,false, 0, true);

_oLoader.execute();

function onQueueProgress(event:QueueLoaderEvent):void {
	trace("\t>>onQueueProgress: "+event.queuepercentage);
}

function onQueueComplete(event:QueueLoaderEvent):void {
	trace("** "+event.type);
}

Calling a SWF's Library Class References - Application Domain Example

// Calling a SWF's Library Class References - Application Domain Example

import com.hydrotik.queueloader.QueueLoader;
import com.hydrotik.queueloader.QueueLoaderEvent;


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

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

_oLoader.addItem("../flashassets/swf/externalsounds.swf", this, {title:"SWF"});

_oLoader.addEventListener(QueueLoaderEvent.QUEUE_START, onQueueStart, false, 0, true);
_oLoader.addEventListener(QueueLoaderEvent.QUEUE_PROGRESS, onQueueProgress, false, 0, true);
_oLoader.addEventListener(QueueLoaderEvent.QUEUE_COMPLETE, onQueueComplete,false, 0, true);

_oLoader.execute();

//Listener functions
function onQueueStart(event:QueueLoaderEvent):void {
	trace("** "+event.type);
}

function onQueueProgress(event:QueueLoaderEvent):void {
	trace("\t>>onQueueProgress: "+event.queuepercentage);
}

function onQueueComplete(event:QueueLoaderEvent):void {
	trace("** "+event.type);
	var loop:Sound = new (getDefinitionByName("Loop1"))();
	var soundChannel:SoundChannel = loop.play(0,999);
}

Queue Disposing

// Queue Disposing

import com.hydrotik.queueloader.QueueLoader;
import com.hydrotik.queueloader.QueueLoaderEvent;

var _oLoader:QueueLoader = new QueueLoader();

var img:Sprite = new Sprite();
img.name = "image_1";
img.x = 20;
img.y = 20;
img.scaleX = img.scaleY = .1;
addChild(img);

_oLoader.addItem("../flashassets/images/slideshow/1.jpg", img, {title:"Image 1"});

_oLoader.addEventListener(QueueLoaderEvent.QUEUE_PROGRESS, onQueueProgress, false, 0, true);
_oLoader.addEventListener(QueueLoaderEvent.QUEUE_COMPLETE, onQueueComplete,false, 0, true);

_oLoader.execute();

function onQueueProgress(event:QueueLoaderEvent):void {
	trace("\t>>onQueueProgress: "+event.queuepercentage);
}

function onQueueComplete(event:QueueLoaderEvent):void {
	trace("** "+event.type);
	setTimeout(callDipose, 3000);
}

function callDipose():void{
	_oLoader.dispose();
}

Manually Setting File Type/URL Variable Example This will let you pass URL variables to a file that is to be loaded. Keep in mind that the example data.php file has no php code in it so that it will run locally. However on a php server you would have the code shown below in the data.php file. This will pass the url variable $user a value of yourname, which you should see as yourname.jpg in the XML output.

PHP:

<?php echo '<?xml version="1.0" encoding="iso-8859-1"?>
<test
	css="test.css"
	>
	<!--
	Fonts:
		
	-->
	
	<config>
		<audio src="flashassets/swf/externalsounds.swf" />
	</config>
	
	
	<images>
		<img src="flashassets/images/slideshow/' . $user . '.jpg" />
		<img src="flashassets/images/slideshow/2.jpg" />
		<img src="flashassets/images/slideshow/3.jpg" />
	</images>
	
</test>'; ?>

Actionscript:

// Manually Setting File Type/URL Variable Example

import com.hydrotik.queueloader.QueueLoader;
import com.hydrotik.queueloader.QueueLoaderEvent;

var _oLoader:QueueLoader = new QueueLoader();

var img:Sprite = new Sprite();
img.name = "image_1";
img.x = 20;
img.y = 20;
img.scaleX = img.scaleY = .1;
addChild(img);

_oLoader.addItem("../includes/admin/data.php?id=1&user=yourname", null,
		{title:"XML PHP", mimeType:QueueLoader.FILE_XML}
);

_oLoader.addEventListener(QueueLoaderEvent.ITEM_COMPLETE, onItemComplete,false, 0, true);
_oLoader.addEventListener(QueueLoaderEvent.QUEUE_PROGRESS, onQueueProgress, false, 0, true);
_oLoader.addEventListener(QueueLoaderEvent.QUEUE_COMPLETE, onQueueComplete,false, 0, true);

_oLoader.execute();

function onItemComplete(event:QueueLoaderEvent):void {
	trace("\t>> "+event.type, "item title: "+event.title);
	if (event.title == "XML PHP") {
		var output:String = XML(event.targ).child("images").child("img")[0].@src;
		trace("\n\t\tXML Node: "+output+"\n\n");
	}
}

function onQueueProgress(event:QueueLoaderEvent):void {
	trace("\t>>onQueueProgress: "+event.queuepercentage);
}

function onQueueComplete(event:QueueLoaderEvent):void {
	trace("** "+event.type);
}

Drawing a SWF's Frames to BitmapData Array Example

// Drawing a SWF's Frames to BitmapData Array Example

import com.hydrotik.queueloader.QueueLoader;
import com.hydrotik.queueloader.QueueLoaderEvent;

var _oLoader:QueueLoader = new QueueLoader();

_oLoader.addItem("../flashassets/swf/externalimages.swf", null, {title:"SWF Images", drawFrames:true});

_oLoader.addEventListener(QueueLoaderEvent.ITEM_COMPLETE, onItemComplete,false, 0, true);
_oLoader.addEventListener(QueueLoaderEvent.QUEUE_PROGRESS, onQueueProgress, false, 0, true);
_oLoader.addEventListener(QueueLoaderEvent.QUEUE_COMPLETE, onQueueComplete,false, 0, true);

_oLoader.execute();

function onItemComplete(event:QueueLoaderEvent):void {
	trace("\t>> "+event.type, "item title: "+event.title);
	if (event.title == "SWF Images") {
		var startX:int = 0; var startY:int = 65;

		for (var i:int = 0; i<event.bmArray.length; i++) {
			var bm:Bitmap = new Bitmap(event.bmArray[i], "auto", true);
			bm.x = startX;
			bm.y = startY;
			bm.scaleX = bm.scaleY = .75;
			addChild(bm);
			startX = startX + 85;
		}
	}
}

function onQueueProgress(event:QueueLoaderEvent):void {
	trace("\t>>onQueueProgress: "+event.queuepercentage);
}

function onQueueComplete(event:QueueLoaderEvent):void {
	trace("** "+event.type);
}

Ignoring of Errors/Error Handling Example

// Ignoring of Errors/Error Handling Example

import com.hydrotik.queueloader.QueueLoader;
import com.hydrotik.queueloader.QueueLoaderEvent;

var _oLoader:QueueLoader = new QueueLoader(true); //<- true arg sets ignore errors

var img:Sprite = new Sprite();
img.x = 20;
img.y = 20;
img.scaleX = img.scaleY = .075;
addChild(img);

var img2:Sprite = new Sprite();
img2.x = 120;
img2.y = 20;
img2.scaleX = img2.scaleY = .075;
addChild(img2);

var img3:Sprite = new Sprite();
img3.x = 220;
img3.y = 20;
img3.scaleX = img3.scaleY = .075;
addChild(img3);

_oLoader.addItem("../flashassets/images/slideshow/1.jpg", img);
_oLoader.addItem("../flashassets/images/slideshow/12.jpg", img2);
_oLoader.addItem("../flashassets/images/slideshow/3.jpg", img3);

_oLoader.addEventListener(QueueLoaderEvent.QUEUE_PROGRESS, onQueueProgress, false, 0, true);
_oLoader.addEventListener(QueueLoaderEvent.QUEUE_COMPLETE, onQueueComplete,false, 0, true);
_oLoader.addEventListener(QueueLoaderEvent.ITEM_ERROR, onItemError,false, 0, true);

_oLoader.execute();

function onQueueProgress(event:QueueLoaderEvent):void {
	trace("\t>>onQueueProgress: "+event.queuepercentage);
}

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

function onQueueComplete(event:QueueLoaderEvent):void {
	trace("** "+event.type);
}

Stop and Resume Example

// Stop and Resume Example

import com.hydrotik.queueloader.QueueLoader;
import com.hydrotik.queueloader.QueueLoaderEvent;

var _oLoader:QueueLoader = new QueueLoader(true); //<- true arg sets ignore errors

var img:Sprite = new Sprite();
img.x = 20;
img.y = 20;
img.scaleX = img.scaleY = .075;
addChild(img);

var img2:Sprite = new Sprite();
img2.x = 170;
img2.y = 20;
img2.scaleX = img2.scaleY = .075;
addChild(img2);

_oLoader.addItem("../flashassets/images/slideshow/1.jpg", img, {title:"Image 1"});
_oLoader.addItem("../flashassets/images/slideshow/2.jpg", img2, {title:"Image 2"});

_oLoader.addEventListener(QueueLoaderEvent.QUEUE_PROGRESS, onQueueProgress, false, 0, true);
_oLoader.addEventListener(QueueLoaderEvent.ITEM_COMPLETE, onItemComplete,false, 0, true);
_oLoader.addEventListener(QueueLoaderEvent.QUEUE_COMPLETE, onQueueComplete,false, 0, true);

_oLoader.execute();

function onQueueProgress(event:QueueLoaderEvent):void {
	trace("\t>>onQueueProgress: "+event.queuepercentage);
}

function onItemComplete(event:QueueLoaderEvent):void {
	trace("\t>> "+event.type, "item title: "+event.title);
	if (event.title == "Image 1") {
		_oLoader.stop();
		// Set a 4 second to pause and resume the load
		setTimeout(resumeLoad, 4000);
	}
}

function onQueueComplete(event:QueueLoaderEvent):void {
	trace("** "+event.type);
}

function resumeLoad():void{
	_oLoader.resume();
}

Bandwidth Detection Example

// Bandwidth Detection Example

import com.hydrotik.queueloader.QueueLoader;
import com.hydrotik.queueloader.QueueLoaderEvent;

var imageContainer:Sprite = new Sprite();
addChild(imageContainer);
imageContainer.x = imageContainer.y = 25;

var addedDefinitions:LoaderContext = new LoaderContext();
addedDefinitions.applicationDomain = ApplicationDomain.currentDomain;
var _oLoader:QueueLoader = new QueueLoader(false, addedDefinitions, true);

var startX:int = 0;
var startY:int = 0;

for (var i:int = 0; i < 3; i++) {
	var img:Sprite = new Sprite();
	img.name = "image_"+i;
	img.x = startX;
	img.y = startY;
	img.scaleX = img.scaleY = .075;
	imageContainer.addChild(img);
	_oLoader.addItem("../flashassets/images/slideshow/"+(i+1).toString()+".jpg", img, {title:"Image "+i});
	if (startX > 250) {
		startX = startX + 50;
		startY = startY + 100;
	} else {
		startX = startX + 150;
	}
}

_oLoader.addEventListener(QueueLoaderEvent.ITEM_COMPLETE, onItemComplete,false, 0, true);
_oLoader.addEventListener(QueueLoaderEvent.QUEUE_PROGRESS, onQueueProgress, false, 0, true);
_oLoader.addEventListener(QueueLoaderEvent.QUEUE_COMPLETE, onQueueComplete,false, 0, true);
_oLoader.execute();

function onQueueProgress(event:QueueLoaderEvent):void {
	trace("\t>>onQueueProgress: "+event.bandwidth+"KB/s");
}

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

function onQueueComplete(event:QueueLoaderEvent):void {
	trace("** "+event.type);
}

CSS Example

// CSS Example

import com.hydrotik.queueloader.QueueLoader;
import com.hydrotik.queueloader.QueueLoaderEvent;

var _oLoader:QueueLoader = new QueueLoader();

_oLoader.addItem("../includes/admin/test.css", null, {title:"CSS"});

_oLoader.addEventListener(QueueLoaderEvent.ITEM_COMPLETE, onItemComplete,false, 0, true);
_oLoader.addEventListener(QueueLoaderEvent.QUEUE_PROGRESS, onQueueProgress, false, 0, true);
_oLoader.addEventListener(QueueLoaderEvent.QUEUE_COMPLETE, onQueueComplete,false, 0, true);

_oLoader.execute();

function onQueueProgress(event:QueueLoaderEvent):void {
	trace("\t>>onQueueProgress: "+event.queuepercentage);
}

function onItemComplete(event:QueueLoaderEvent):void {
	trace("\t>> "+event.type, "item title: "+event.title);
	if (event.fileType == QueueLoader.FILE_CSS) {
		trace("\t\tCSS: "+event.content.styleNames);
	}
}

function onQueueComplete(event:QueueLoaderEvent):void {
	trace("** "+event.type);
}

XML Loading/Get Item By Title Example

// XML Loading/Get Item By Title Example

import com.hydrotik.queueloader.QueueLoader;
import com.hydrotik.queueloader.QueueLoaderEvent;

var _oLoader:QueueLoader = new QueueLoader();

_oLoader.addItem("../includes/admin/test.xml", null, {title:"XML"});

_oLoader.addEventListener(QueueLoaderEvent.ITEM_COMPLETE, onItemComplete,false, 0, true);
_oLoader.addEventListener(QueueLoaderEvent.QUEUE_PROGRESS, onQueueProgress, false, 0, true);
_oLoader.addEventListener(QueueLoaderEvent.QUEUE_COMPLETE, onQueueComplete,false, 0, true);

_oLoader.execute();

function onQueueProgress(event:QueueLoaderEvent):void {
	trace("\t>>onQueueProgress: "+event.queuepercentage);
}

function onItemComplete(event:QueueLoaderEvent):void {
	trace("\t>> "+event.type, "item title: "+event.title);
	if (event.fileType == QueueLoader.FILE_XML) {
		trace("\t\tXML: "+event.content);
	}
}

function onQueueComplete(event:QueueLoaderEvent):void {
	trace("** "+event.type);
	trace("\n\nXML Node:\n"+XMLList(_oLoader.getItemByTitle("XML").content).queueloader.item[0]);
}

Sorting Example

// Sorting Example

import com.hydrotik.queueloader.QueueLoader;
import com.hydrotik.queueloader.QueueLoaderEvent;

var _oLoader:QueueLoader = new QueueLoader();

_oLoader.addItem("../flashassets/mp3/GetDown.mp3", null, {title:"MP3"});
_oLoader.addItem("../flashassets/swf/externalsounds.swf", this, {title:"SWF"});
_oLoader.addItem("../includes/admin/test.xml", null, {title:"XML"});
_oLoader.addItem("../includes/admin/data.php?id=1&user=yourname", null,
     {title:"XML PHP", mimeType:QueueLoader.FILE_XML}
);
_oLoader.addItem("../flashassets/swf/externalimages.swf", null, {title:"SWF Images", drawFrames:true});
_oLoader.addItem("../includes/admin/test.css", null, {title:"CSS"});

_oLoader.addEventListener(QueueLoaderEvent.QUEUE_START, onQueueStart, false, 0, true);
_oLoader.addEventListener(QueueLoaderEvent.ITEM_COMPLETE, onItemComplete,false, 0, true);
_oLoader.addEventListener(QueueLoaderEvent.QUEUE_COMPLETE, onQueueComplete,false, 0, true);

_oLoader.execute();

function onQueueStart(event:QueueLoaderEvent):void {
	trace("** "+event.type);
	trace(_oLoader.getQueuedItems());
}

function onItemComplete(event:QueueLoaderEvent):void {
	trace("\t>> "+event.type, "item title: "+event.title);
	if (event.title == "MP3") {
                // This takes an array of two items (second arg)
                // from 4th position (1st arg) and inserts them
                // into the 2nd position (3rd arg)
		_oLoader.shuffle(4, 2, 2);
	}
}

function onQueueComplete(event:QueueLoaderEvent):void {
	trace("** "+event.type);
	trace(_oLoader.getLoadedItems());
}

Adding Items On-The-Fly Example

// Adding Items On-The-Fly Example

import com.hydrotik.queueloader.QueueLoader;
import com.hydrotik.queueloader.QueueLoaderEvent;

var _oLoader:QueueLoader = new QueueLoader();

_oLoader.addItem("../flashassets/mp3/GetDown.mp3", null, {title:"MP3"});
_oLoader.addItem("../flashassets/swf/externalsounds.swf", this, {title:"SWF"});


_oLoader.addEventListener(QueueLoaderEvent.QUEUE_START, onQueueStart, false, 0, true);
_oLoader.addEventListener(QueueLoaderEvent.ITEM_COMPLETE, onItemComplete,false, 0, true);
_oLoader.addEventListener(QueueLoaderEvent.QUEUE_COMPLETE, onQueueComplete,false, 0, true);

_oLoader.execute();

function onQueueStart(event:QueueLoaderEvent):void {
	trace("** "+event.type);
	trace(_oLoader.getQueuedItems());
}

function onItemComplete(event:QueueLoaderEvent):void {
	trace("\t>> "+event.type, "item title: "+event.title);
	if (event.title == "SWF") {
		_oLoader.addItem("../includes/admin/test.xml", null, {title:"XML"});
		_oLoader.addItem("../flashassets/swf/externalimages.swf", null, {title:"SWF Images"});
		_oLoader.addItem("../includes/admin/test.css", null, {title:"CSS"});
	}
}

function onQueueComplete(event:QueueLoaderEvent):void {
	trace("** "+event.type);
	trace(_oLoader.getLoadedItems());
}

QLManager Example

// QLManager Example

import com.hydrotik.queueloader.QueueLoader;
import com.hydrotik.queueloader.QueueLoaderEvent;
import com.hydrotik.queueloader.QLManager;

var _oLoader:QueueLoader = new QueueLoader(false, null, true, "loader1");

_oLoader.addItem("../flashassets/mp3/GetDown.mp3", null, {title:"MP3"});
_oLoader.addItem("../flashassets/swf/externalsounds.swf", this, {title:"SWF"});

_oLoader.addEventListener(QueueLoaderEvent.QUEUE_COMPLETE, onQueueComplete,false, 0, true);

_oLoader.execute();



var _oLoader2:QueueLoader = new QueueLoader(false, null, true, "loader2");

_oLoader2.addItem("../includes/admin/test.xml", null, {title:"XML"});
_oLoader2.addItem("../flashassets/swf/externalimages.swf", null, {title:"SWF Images"});
_oLoader2.addItem("../includes/admin/test.css", null, {title:"CSS"});

_oLoader2.addEventListener(QueueLoaderEvent.QUEUE_COMPLETE, onQueue2Complete,false, 0, true);

_oLoader2.execute();

function onQueueComplete(event:QueueLoaderEvent):void {
	trace("** "+event.type);
	trace(_oLoader.getLoadedItems());
}

function onQueue2Complete(event:QueueLoaderEvent):void {
	trace("** "+event.type);
	trace(_oLoader2.getLoadedItems());
	setTimeout(callDipose, 3000);
}

function callDipose():void{
	trace("QLManager Accessing Items:");
	trace("\t"+QLManager.getQueue("loader1").getItemAt(0).title);
	trace("\t"+QLManager.getQueue("loader2").getItemAt(0).title);
	QLManager.disposeAll();
	trace("QLManager Disposing:");
	trace("\t"+QLManager.getQueue("loader1"));
	trace("\t"+QLManager.getQueue("loader2"));
}

Zip Loading Example Make sure you have the nochump package in your source folder.

// Zip Loading Example

import com.hydrotik.queueloader.QueueLoader;
import com.hydrotik.queueloader.QueueLoaderEvent;

var _oLoader:QueueLoader = new QueueLoader();

_oLoader.addItem("../flashassets/zip/assets.zip", null);

_oLoader.addEventListener(QueueLoaderEvent.ITEM_COMPLETE, onItemComplete,false, 0, true);
_oLoader.addEventListener(QueueLoaderEvent.QUEUE_PROGRESS, onQueueProgress, false, 0, true);
_oLoader.addEventListener(QueueLoaderEvent.QUEUE_COMPLETE, onQueueComplete,false, 0, true);

_oLoader.execute();

function onQueueProgress(event:QueueLoaderEvent):void {
	trace("\t>>onQueueProgress: "+event.queuepercentage);
}

function onItemComplete(event:QueueLoaderEvent):void {
	trace("\t>> "+event.type, "item title: "+event.title);
	if (event.fileType == QueueLoader.FILE_ZIP) {
		trace("\t\tZIP Array: "+event.content);
	}
}

function onQueueComplete(event:QueueLoaderEvent):void {
	trace("** "+event.type);
}

PCM Wav Loading Example Make sure the Popforge library is included in your source along with the modified SoundFactory class that bypasses the swf.bin file. This modified class writes the bytes to a ByteArray instead.

//PCM Wav Loading Example

import com.hydrotik.queueloader.QueueLoader;
import com.hydrotik.queueloader.QueueLoaderEvent;

var soundChannel:SoundChannel = new SoundChannel();

var _oLoader:QueueLoader = new QueueLoader();

_oLoader.addItem("../flashassets/pcm/loop1.wav", null, {title:"Loop1"});

_oLoader.addEventListener(QueueLoaderEvent.ITEM_COMPLETE, onItemComplete,false, 0, true);
_oLoader.addEventListener(QueueLoaderEvent.QUEUE_PROGRESS, onQueueProgress, false, 0, true);
_oLoader.addEventListener(QueueLoaderEvent.QUEUE_COMPLETE, onQueueComplete,false, 0, true);

_oLoader.execute();

function onQueueProgress(event:QueueLoaderEvent):void {
	trace("\t>>onQueueProgress: "+event.queuepercentage);
}

function onItemComplete(event:QueueLoaderEvent):void {
	trace("\t>> "+event.type, "item title: "+event.title);
	if (event.fileType == QueueLoader.FILE_WAV) {
		soundChannel = event.content.play(0,999);
	}
}

function onQueueComplete(event:QueueLoaderEvent):void {
	trace("** "+event.type);
}

MP3 Loading Example!

//MP3 Loading Example

import com.hydrotik.queueloader.QueueLoader;
import com.hydrotik.queueloader.QueueLoaderEvent;

var soundChannel:SoundChannel = new SoundChannel();

var _oLoader:QueueLoader = new QueueLoader();

_oLoader.addItem("../flashassets/mp3/GetDown.mp3", null, {title:"MP3"});

_oLoader.addEventListener(QueueLoaderEvent.ITEM_COMPLETE, onItemComplete,false, 0, true);
_oLoader.addEventListener(QueueLoaderEvent.QUEUE_PROGRESS, onQueueProgress, false, 0, true);
_oLoader.addEventListener(QueueLoaderEvent.QUEUE_COMPLETE, onQueueComplete,false, 0, true);

_oLoader.execute();

function onQueueProgress(event:QueueLoaderEvent):void {
	trace("\t>>onQueueProgress: "+event.queuepercentage);
}

function onItemComplete(event:QueueLoaderEvent):void {
	trace("\t>> "+event.type, "item title: "+event.title);
	if (event.fileType == QueueLoader.FILE_MP3) {
		soundChannel = event.content.play(0);
	}
}

function onQueueComplete(event:QueueLoaderEvent):void {
	trace("** "+event.type);
}

Direct QL Formatted XML Loading Example This snippet of XML can reside anywhere in your XML document. It allows for automatic passing of QueueLoader data. The prefix attribute simply adds the prefix when the movie is in external/standalone mode when publishing locally. If your paths jump directories or require absolute paths, then you can leave it as prefix="".

XML:

<queueloader prefix="../">
		<item container="this" src="flashassets/swf/externalimages.swf">
			<info>
				<title><![CDATA[SWF Images]]></title>
				<cacheKiller><![CDATA[true]]></cacheKiller>
				<drawFrames><![CDATA[true]]></drawFrames>
			</info>
		</item>
		<item container="imageContainer" src="flashassets/images/slideshow/1.jpg">
			<info>
				<title><![CDATA[Image 1]]></title>
				<cacheKiller><![CDATA[true]]></cacheKiller>
			</info>
		</item>
		<item container="null" src="flashassets/images/slideshow/2.jpg">
			<info>
				<title><![CDATA[Image 2]]></title>
				<cacheKiller><![CDATA[true]]></cacheKiller>
			</info>
		</item>
		<item container="null" src="flashassets/images/slideshow/3.jpg">
			<info>
				<title><![CDATA[Image 3]]></title>
				<cacheKiller><![CDATA[true]]></cacheKiller>
			</info>
		</item>
	</queueloader>

The loadXML() method also accepts a scope variable which relates to the container attribute. I.E. scopecontainer. If it's null, then the container has no parent reference and is the same as adding null to an addItem() method.

Actionscript:

//Direct QL Formatted XML Loading Example

import com.hydrotik.queueloader.QueueLoader;
import com.hydrotik.queueloader.QueueLoaderEvent;

var _oLoader:QueueLoader = new QueueLoader();

_oLoader.addItem("../includes/admin/test.xml", null, {title:"XML"});

_oLoader.addEventListener(QueueLoaderEvent.ITEM_COMPLETE, onItemComplete,false, 0, true);
_oLoader.addEventListener(QueueLoaderEvent.QUEUE_PROGRESS, onQueueProgress, false, 0, true);
_oLoader.addEventListener(QueueLoaderEvent.QUEUE_COMPLETE, onQueueComplete,false, 0, true);

_oLoader.execute();

function onQueueProgress(event:QueueLoaderEvent):void {
	trace("\t>>onQueueProgress: "+event.queuepercentage);
}

function onItemComplete(event:QueueLoaderEvent):void {
	trace("\t>> "+event.type, "item title: "+event.title);
	if (event.title == "XML") {
		_oLoader.loadXML(event.content);
	}
}

function onQueueComplete(event:QueueLoaderEvent):void {
	trace("** "+event.type);
}

SWF Timeline Example

//SWF Timeline Example

import com.hydrotik.queueloader.QueueLoader;
import com.hydrotik.queueloader.QueueLoaderEvent;

var _oLoader:QueueLoader = new QueueLoader();

_oLoader.addItem("../flashassets/swf/timeline.swf", this);

_oLoader.addEventListener(QueueLoaderEvent.ITEM_COMPLETE, onItemComplete,false, 0, true);
_oLoader.addEventListener(QueueLoaderEvent.QUEUE_PROGRESS, onQueueProgress, false, 0, true);
_oLoader.addEventListener(QueueLoaderEvent.QUEUE_COMPLETE, onQueueComplete,false, 0, true);

_oLoader.execute();

function onQueueProgress(event:QueueLoaderEvent):void {
	queueprog.width = 150 * event.queuepercentage;
	queue_txt.text = "QUEUE: "+Math.round((event.queuepercentage*100)).toString() + "% COMPLETE";
}

function onItemComplete(event:QueueLoaderEvent):void {
	trace("\t>> "+event.type, "item title: "+event.title);
	if (event.fileType == QueueLoader.FILE_SWF) {
		event.content.fireFunction();
		event.content.gotoAndPlay(2);
	}
}

function onQueueComplete(event:QueueLoaderEvent):void {
	trace("** "+event.type);
}

Generic Data Loading Example

//Generic Data Loading Example

import com.hydrotik.queueloader.QueueLoader;
import com.hydrotik.queueloader.QueueLoaderEvent;

var _oLoader:QueueLoader = new QueueLoader();

_oLoader.addItem("../queueloader.html", null, {title:"HTML"});

_oLoader.addEventListener(QueueLoaderEvent.ITEM_COMPLETE, onItemComplete,false, 0, true);
_oLoader.addEventListener(QueueLoaderEvent.QUEUE_PROGRESS, onQueueProgress, false, 0, true);
_oLoader.addEventListener(QueueLoaderEvent.QUEUE_COMPLETE, onQueueComplete,false, 0, true);

_oLoader.execute();

function onQueueProgress(event:QueueLoaderEvent):void {
	trace("\t>>onQueueProgress: "+event.queuepercentage);
}

function onItemComplete(event:QueueLoaderEvent):void {
	trace("\t>> "+event.type, "item title: "+event.title);
	if (event.title == "HTML") {
		trace(event.content);
	}
}

function onQueueComplete(event:QueueLoaderEvent):void {
	trace("** "+event.type);
}

Comment by bivald, Mar 19, 2008

Note that QUEUE_INIT and ITEM_INIT changed in Rev 18. But in the first example (here on the wiki and on the main site) the old function names is used, partial or in full. Not a major problem, but it might be confusing for beginners.

Suggested edits:

- http://code.google.com/p/queueloader-as3/ change to QUEUE_COMPLETE and ITEM_COMPLETE. - On this page, Load Monitoring, "function onItemInit" should be "function onItemComplete"

Great work with the loader!

Comment by chichilatte, Jul 18, 2008

Your Basic Loading example has a syntax error... oLoader.addItem("images/image1.jpg"), img, {title:"Image "});

shuld be

oLoader.addItem("images/image1.jpg", img, {title:"Image "});

Comment by chichilatte, Jul 18, 2008

I was wondering how you might use QueueLoader to load a swf which has its own document class. From the examples given on this page, it looks like the document class will be constructed twice. Eg.

var _oLoader:QueueLoader = new QueueLoader();
var swf = new MySwfDocumentClass();
addChild(swf);
_oLoader.addItem("myswf.swf"), swf, {title:"My SWF"});
_oLoader.execute();

and the document class:

package {
	public class MySwfDocumentClass extends MovieClip {

		public function MySwfDocumentClass() {
			trace("Constructing MySwfsDocumentClass");
		}

	}
}

will result in the output...

Constructing MySwfsDocumentClass
Constructing MySwfsDocumentClass

Am I being stupid? Is there a way to have the class instantiated only once?

Comment by francesco.carteni, Jul 29, 2008

Hi, i tried the 'Loading FLV into a VideoPlayer? object' but doesnt't run.

My version is:

import com.hydrotik.utils.QueueLoader;
import com.hydrotik.utils.QueueLoaderEvent;
import fl.video.VideoPlayer;

var _oLoader:QueueLoader = new QueueLoader();
var flvContainer:VideoPlayer = new VideoPlayer();
addChild(flvContainer);

_oLoader.addItem("000004529091_HDFlashVideo.flv", flvContainer, {title:"flv"});
_oLoader.execute();

_oLoader.addEventListener(QueueLoaderEvent.ITEM_COMPLETE, onItemComplete,false, 0, true);

// event.file:NetStream
function onItemComplete(event:QueueLoaderEvent):void {        
	trace("\t>> FLV: "+event.type, "item title: "+event.title);        
	if(event.filetype == QueueLoader.FILE_FLV)
	{                
		trace(event.file)		   
	}
}

In this version i've just created a VideoPlayer? instance and i've cut

event.file.play();

into the handler because generated an error.

Comment by haungo, Sep 09, 2008

Can you preload the stage + timeline in the same queue with an xml file an all the images from that xml file? That sure would be great!

Comment by bdefore, Apr 20, 2009

Note that if you are requesting an XML file from a data service that does not have the XML extension, at this point you must pass {mimeType:QueueLoader.FILE_XML} in with the third parameter for your addItem calls. Otherwise you get this rather obscure error upon calling execute:

TypeError?: Error #1010: A term is undefined and has no properties.

at com.hydrotik.queueloader::QueueLoader/com.hydrotik.queueloader:QueueLoader::loadNextItem() at com.hydrotik.queueloader::QueueLoader/execute() at QLTest$iinit()


Sign in to add a comment
Hosted by Google Code