What's new? | Help | Directory | Sign in
Google
queueloader-as3
QueueLoader Actionscript 3.0
  
  
  
  
    
Search
for
Updated Dec 10, 2007 by dono...@hydrotik.com
QueueLoaderGuide  
QueueLoader usage guide

QueueLoader Guide

Basic Loading

import com.hydrotik.utils.QueueLoader;

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_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>> "+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 onQueueComplete(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_COMPLETE, onQueueComplete,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_COMPLETE, onItemComplete,false, 0, true);
_oLoader.execute();

function onItemComplete(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_COMPLETE, onItemComplete,false, 0, true);
_oLoader.execute();

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

Loading FLV into a VideoPlayer object

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

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

_oLoader.addItem("flashassets/flv/test.flv", flvContainer, {title:"flv"});
_oLoader.addEventListener(QueueLoaderEvent.ITEM_COMPLETE, onItemComplete,false, 0, true);
_oLoader.execute();


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

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_COMPLETE, onQueueComplete,false, 0, true);
_oLoader.execute();

function onQueueComplete(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_COMPLETE, onQueueComplete,false, 0, true);
_oLoader.execute();


function onQueueComplete(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_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();

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 onItemComplete(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 onQueueComplete(event:QueueLoaderEvent):void {
	trace("\t>> "+event.type, "item title: "+event.title);
}

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


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 (6 days ago)

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 (6 days ago)

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?


Sign in to add a comment