The Edge

4 de abril de 2009

Please redirect to http://blog.andreanaya.com

Problema com loader|Loader issue

25 de março de 2009

Sexta passada estava olhando o Flash Bookmarks e vi que uma dúvida foi postada em relação ao Loader.
Um tempo atrás eu precisei carregar um arquivo utilizando um Loader e depois adicionar o conteudo carregado no stage. Contudo um erro era gerado ao adicionar o conteúdo.
Last friday I was checking Flash Bookmarks and I noticed a question about Loader.
While ago I needed to load a file using a Loader and then add it to the stage. However it raised an error.

ArgumentError: Error #2025 : The supplied DisplayObject must be a child of the caller.

Para resolver o problema eu precisei extrair o conteudo em uma variavel e depois executar um loader.unload() antes de adicionar ao stage.
To solve the problem I needed to extract the conten in a var and then call a loader.unload() before add it to the stage.

function onLoadComplete(e:Event):void{
	var image:Bitmap = e.currentTarget.content;
	loader.unload();
	addChild(image);
}

É o mesmo caso quando você utiliza o mesmo loader para carregar dois ou mais arquivos.
It’s the same case when you try to load two or more files using the same loader.

Exemplo
Example

DataLib

25 de março de 2009

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

Google code

20 de março de 2009

Decidi criar um google code com minhas classes, ainda nao existe nenhuma documentação mas existem exemplos de uso
I’ve decided to create a google code with my classes, there’s no docs yet but there’s some usage examples

Até agora coloquei 4 libs que costumo usar em meus trabalhos:
So far there’s 4 libs that I use in my works:

-DataLib

Classe de loading (exemplo) em fila com armazenamento de dados
Loader class (example) usign queue

-CromelessPlayer

Classe de carregamento e execução de video e playlist
Video class with playlist

-SoundControl

Classe de som (exemplo). *Ainda precisa de muitos ajustes
Sound class (example). *Still need ajustments

-MatrixTween

Classe de tweening baseada no Tweener e TweenLite com controle de tempo independente
Tweening class based on Tweener and TweenLite with time control

Depois de muito tempo|After a long time

20 de março de 2009

Ultimos trabalhos lançados
Last jobs

http://www.kvarch.com/

#24 @ http://www.designcharts.com/ - FEB 8th 2009

http://www.marciokogan.com

#24 @ http://www.designcharts.com/ - MAR 22nd 2009

Também sairam nos seguintes sites:
Also @:

http://dopeawards.com/
http://iblog.chubzz.com/
http://anotherbookmark.com/
http://spyline.de/
http://www.webdesignfile.com/
http://www.designlicks.com/
http://bm.straightline.jp/

Long nights no sleep

Bolsas Havaianas

24 de novembro de 2008

Bolsas Havaianas (Alpha)
type havahavahava

Pepsi Oficial

10 de outubro de 2008

Mais um job lançado
http://www.pepsi.com.br/
One more job launched
http://www.pepsi.com.br/

Reconhecimento de placa de som|Soundcard check

16 de setembro de 2008

Para verificar se a placa de som está disponível, veja se a classe SoundChannel não é nula
To check if the soundcard is available, test if the SoundChannel class is not null

var sound:Sound = new Sound();
var channel:SoundChannel = sound.play();
 
if(channel != null){
    trace("Soundcard available");
}else{
    trace("Soundcard not available");
}

Livros|Books

4 de setembro de 2008

Livros que eu recomendo para quem quer aprender mais sobre as3
Books that I recommend for those who want to learn more about as3

  • Essential ActionScript 3.0
  • Foundation Actionscript 3.0 Animation: Making Things Move!

E esses livros eu recomendo para quem quer aprender mais sobre matemática direcionada a aplicações 3D e games
And these books I recommend for those who want to learn more about mathematics for 3D apliccations and games

  • Essential Mathematics for Games and Interactive Applications: A Programmer’s Guide
  • Real-Time Collision Detection

numberLoop

3 de setembro de 2008

Um método que eu uso bastante quando preciso de um loop em determinado comprimento de elementos
Here is a method that I use a lot when I need to loop a length of any kind

trace(numberLoop(103754, 3));
//2
 
trace(numberLoop(686.9384, 17.53));
//3.268399999999957
 
trace(numberLoop(Math.PI*13/6, Math.PI*2));
//0.5235987755982991 rad - radToDegree == 0.5235987755982991*180/Math.PI -> 30.000000000000014º
 
trace(numberLoop(-2187.4, 2));
//0.599999999999909
 
function numberLoop(n:Number, t:Number):Number {
	if(t<=0){
		throw new Error("Total must be greater thant 0");
	}
 
	return (n%t+t)%t;
}