Em meus ultimos trabalhos criei e aperfeiçoei um classe de loader em fila que armazenasse os arquivos carregados para futuras requisições.
During my last jobs I wrote a queue loader class that stores all loaded files for future requests.
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.
Since it’s a static class, any loaded file can be used from any parto of the app, even from external SWF files.
-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.
Any file must be add to a load queue passing the url and type of file to be loaded. The file can be added at the end of the queue or in a especific position.
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.
Also is possible get the load queue.
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.
To start loading you must call DataLib.load()
Also it’s possible to pause, resume and close the loading.
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.
Every load file is stored for future requisitions. If necessary, files can be deleted freeing memory. Get loaded files using it’s 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
Custom Events cam be added to follow the loading. You can add an event in the class or in a especific item. *Remember to remove all events from the class to prevent conflicts with other loadings.
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.
These are the supported files. You can get embed classes in SWF loaded files using the main movie application domain.
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.
You can get this and other classes using my google code.
http://andreanaya.googlecode.com/svn/trunk/
Existe também um exemplo de uso dessa classe.
Theres also an example of usage of this class.
Obrigado a todos e espero que essa classe seja util para vocês. Qualquer problema ou sugestão por favor me informem.
Thanks and I hope this could be usefull for you guys. Any problem or sugestion please tell me.
Anaya
Tags: as3, class, data, datalib, example, lib, loader, source