LABS | VIZAR

Vizar Laboratorien

Flex BulkLoader

Today i’ve played a little bit with Arthus Debert’s BulkLoader and put it together in a really simple Flex-Application. It does nothing more than loading content in a streamlined form, so the perfomance for asset-overheaded applications should be better. Next time i give Donovan Adams QueueLoader a try.

ItemLoader.as

package loading

{

 import br.com.stimuli.loading.BulkLoader;

 import br.com.stimuli.loading.BulkProgressEvent;
 import caurina.transitions.Tweener;

 import flash.display.Bitmap;

 import flash.display.Sprite;

 import flash.events.*;

 import flash.net.URLRequest;

 import mx.core.UIComponent;

public class ItemLoader extends UIComponent

 {

private var _bulkLoader:BulkLoader;

 	private var _bg:URLRequest;

 	private var _bmp:Bitmap;

 	private var _loaderBar:Sprite;

 	private var _sw:Number;

 	private var _sh:Number;

public function ItemLoader()

 	{

 		_bulkLoader = new BulkLoader("mainLoader");

 		_bg = new URLRequest("assets/images/bg.jpg");

		_bulkLoader.add(_bg);

		_bulkLoader.addEventListener(BulkProgressEvent.COMPLETE, onCompleteHandler);

 		_bulkLoader.addEventListener(BulkProgressEvent.PROGRESS, onProgressHandler);

		addEventListener(Event.ADDED_TO_STAGE, stageHandler);

		_bulkLoader.start();

		createLoaderBar();

 	}

private function stageHandler(e:Event):void

 	{

		_sw = stage.stageWidth;

 		_sh = stage.stageHeight;

}

private function onCompleteHandler(e:ProgressEvent):void

 	{

 		_bmp = _bulkLoader.getBitmap("assets/images/bg.jpg");

		_bmp.width = 1057;

 		_bmp.height = 600;

 		_bmp.smoothing = true;

 		_bmp.alpha = 0;

		addChild(_bmp);

 		Tweener.addTween(_bmp, {alpha:1, time:0.4, transition:"easeInQuart"});

		fadeLoaderBar()

}

private function createLoaderBar():void

 	{

		_loaderBar = new Sprite();

 		_loaderBar.graphics.beginFill(0xff0000, 1.0);

 		_loaderBar.graphics.drawRect(0,0,1, 2);

		ddChild(_loaderBar);

}

private function onProgressHandler(e:ProgressEvent):void

 	{

trace("Loaded" , e.bytesLoaded," of ",  e.bytesTotal);

_loaderBar.width = ((e.bytesLoaded / e.bytesTotal) * 1057);

}

private function fadeLoaderBar():void

 	{

Tweener.addTween(_loaderBar, {alpha:0, time:1, transition:"easeOutQuad", onComplete:removeLoaderBar })

 	}

private function removeLoaderBar():void

 	{

removeChild(_loaderBar);

 	}

}

}

Check out the Application loading a large .jpg

1 Comment so far

  1. SarcasticOne December 21st, 2007 13:28

    It loads an image - large? maybe! - an now?
    ;)
    Keep up your good work. Do somemore stuff here, like your xml banner- / imagerotator.

Leave a reply