DataLib

Em meus ultimos trabalhos criei e aperfeiçoei um classe de loader em fila que armazenasse os arquivos carregados para futuras requisições.

DataLib

Overview:

-Static

Por ser uma classe estátca qualquer arquivo carregado pode ser acessado em qualquer parte da aplicação, mesmo de arquivos SWF externos.

-Load queue

Qualquer arquivo deve ser adicionado em uma fila de carregamentos passando-se o caminho e tipo de arquivo a ser carregado. O arquivo pode ser adicionado no fim da file ou em uma posição especifica.

DataLib.addItem("file.swf", DataLib.TYPE_SWF);
DataLib.addItemAt("file.png", 0, DataLib.TYPE_PNG);
DataLib.addItem("file.wav", DataLib.TYPE_BINARY);

Também é possivel acessar a file de carregamento.

var queue:Array = DataLib.queue;

Para iniciar o caregamento você deve executar a função DataLib.load()
Támbem é possível pausar, recarregar e parar o carregamento.

DataLib.pause();
DataLib.resume();
DataLib.close();

-Data storage

Todo arquivo carregado é armazenado para futuras requisições. Caso necessario os arquivos podem ser deletados, liberando memoria. Os arquivos podem ser acessados utilizando como referência sua URL.

var image:Bitmap = DataLib.lib[fileURL].data;
 
addChild(image);
 
DataLib.removeItem(fileURL);

-Custom Events

Eventos especificos dessa classe podem ser adicionados para acompanhar o carregamento. Você pode adicionar eventos na própria classe ou em um item especifico.

*Lembre-se de remover qualquer evento adicionado na classe para evitar conflitos com outros carregamentos

DataLib.addItemAt("file.png", 0, DataLib.TYPE_PNG).addEventListener(DataLibEvent.PROGRESS, onItemProgress);
DataLib.lib["file.xml"].addEventListener(DataLibEvent.COMPLETE, onItemComplete);
 
DataLib.addEventListener(DataLibEvent.COMPLETE, onComplete);
 
DataLib.load();
 
function onItemProgress(e:Event):void{
	trace(Math.floor(e.bytesLoaded*100/e.bytesTotal)+"%");
}
function onItemComplete(e:Event):void{
	trace(e.data);
}
function onComplete(e:Event):void{
	addChild(DataLib.lib["file.png"].data);
}

-JPG, GIF, PNG, SWF, XML and BINARY

Esses são os arquivos suportados. No caso de arquivos SWF é possível acessar classes exportadas utilizando o application domain do filme principal.

DataLib.addItem("asset.swf", DataLib.TYPE_SWF);
 
addChild(DataLib.lib["asset.swf"].data)
 
var EmbedClass:Class = ApplicationDomain.currentDomain.getDefinition("assetEmbedClass") as Class;
var instance:* = new EmbedClass();

Você pode fazer o download dessa e outras classes minhas utilizando o meu google code.

http://andreanaya.googlecode.com/svn/trunk/

Existe também um exemplo de uso dessa classe.

Obrigado a todos e espero que essa classe seja util para vocês. Qualquer problema ou sugestão por favor me informem.

Anaya

This entry was posted in as3 and tagged , . Bookmark the permalink.

2 Responses to DataLib

  1. Elder Henrique Souza says:

    Muito, bom.
    Classe super útil, e muito bem estruturada! Continue o bom trabalho Anaya!

  2. Bruce Bannor says:

    Hey, When I try to do any sort of heavy loading, the dataLib just stops.. It prints out no errors, I’ve traced it somewhere between the loader.load call and the progress event. I had my listeners set to weak reference but I’ve changed that to no avail. So I thought possibly the GC was taking them. Any other ideas why this would fail to finish loading?

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="">