Curso AS3

Archive for the ‘Actionscript 3.0’ Category

FileReference não executa o download

Tuesday, July 29th, 2008

Podemos forçar o download de arquivos como um txt, jpg, gif, etc, utilizando PHP manipulando o header. No Flash podemos utilizar também a classe FileReference, faz a mesma coisa, e de forma muito simples, portanto se estamos utilizando o Flash é muito mais vantajoso utilizar a classe do próprio actionscript.

Mas este post não tem intenção de abordar a classe FileReference, e sim de um problema pelo qual passei, observe o script abaixo:

Actionscript:
  1. function onDownload():void
  2. {
  3. var fl:FileReference = new FileReference();
  4. fl.download(new URLRequest("texto.txt"));
  5. }

Um script simples que parece funcionar, entretanto após clicar em salvar na janela aberta no browser o arquivo nunca será salvo.

O problema ocorre porque ao contrário da classe URLLoader, a classe FileReference não permanece disponível quando o escopo onde está presente é descartado, assim a caixa para salvar é aberta, mas o objeto FileReference já foi eliminado.

A solução é muito simples, basta declarar o objeto FileReference em um escopo que estará disponível enquanto o objeto for necessário, em classes declare como uma propriedade.

O script abaixo funcionará:

Actionscript:
  1. var fl:FileReference = new FileReference();
  2.  
  3. function onDownload():void
  4. {
  5. fl.download(new URLRequest("texto.txt"));
  6. }

O problema é documentado pela Adobe em FileReference.download() in SWF file fails.

Ribop em fase de testes

Thursday, July 24th, 2008

Estou testando um projeto meu, o Ribop, desenvolvido em Flex. Os testes estão sendo feitos a mais de um mês por alguns amigos, e amigos de amigos, eu convidei uns cinco amigos, mas o site já tem cadastrado cerca de cinquenta usuários.

O sistema é um espaço para troca de idéias em forma de texto, imagens e vídeos, cada espaço pode ser personalizada de acordo com as preferências do usuário e conta com recursos como acesso completo (ou quase) via url.

O site está em fase beta, quem quiser conferir basta se cadastrar, mas eu adianto, é beta, todos os dias eu atualizo o sistema com algo novo, mas ainda tem muita coisa a ser feita. =P

Quem quiser me adicionar, o endereço do meu espaço é http://ribop.com/#/ericksouza/.

Porque Ribop?

O porque do nome é bem simples, Ribop surgiu de Bebop que vem do Jazz. Conheci o termo através do anime Cowboy Bebop (muito bom), onde a trilha sonora é Jazz.

Resumo do projeto.

O Ribop é um projeto meu que inicie em novembro do ano passado, e junto com meu amigo Luís Felipe programamos a base do site. O desenvolvimento foi interrompido no início do ano de 2008 por diversos fatores que me obrigou a abandonar o projeto inicial. Logo depois decidi começar um novo projeto, agora sendo desenvolvido apenas por mim, chegando numa estrutura melhor do que eu esperava, tornando qualquer atualização completamente mais simples, o encapsulamento foi o principal motivo da melhora de controle de dados.

Security Settings, chamando Javascript localmente via Flash

Tuesday, May 6th, 2008

No post Flash junto ao Lightbox e Shadowbox recebi alguns comentários no blog e mensagens via e-mail relatando que a reprodução do exemplo não funcionou. Se você fez tudo certo, funciona, o problema é que localmente existem algumas restrições que bloqueiam a chamada do Javascript pelo Flash.

Uma das soluções é liberar a partição, ou pasta que você está trabalhando na página da Adobe em Global Security Settings Panel. Acessando a página clique em Edit Locations.., Browse Folder... e selecione a pasta e/ou partição. Pronto, nem precisa reiniciar a máquina.

Eu já adiciono a partição toda para não precisar adicionar cada pasta de cada projeto.

Lembrando que no servidor funcionará de qualquer forma, é uma restrição local.

Flash junto ao Lightbox e Shadowbox

Wednesday, March 26th, 2008

O Lightbox é muito popular, todos devem conhecer, é o efeito modal para abrir fotos sobre o site usando Javascript, veja aqui o efeito.

Pois bem, quando eu precisei deste efeito no Flash e Flex, escrevi uma classe Actionscript e o trabalho todo foi feito usando apenas o Flash.

Após uma mensagem do amigo Diego Tavares no fórum aqui do site sobre o uso do Lightbox e Shadowbox junto o Flash, andei pensando nessa união de JS e Flash, como eu estou acostumado a trabalhar com sites feitos completamente em Flash eu nunca senti necessidade de usar o Lightbox, mas para sites feitos parcialmente em Flash, para obter o efeito modal não temos saída, é preciso recorrer ao JS.

Eu vou mostrar aqui apenas como usar o Shadowbox, pois o Lightbox tem muitos exemplos na internet, e diferente do Shadowbox, o Lightbox abre apenas imagens.

(more...)

Como baixar o Papervision 3D 2.0 Alpha Great White

Thursday, February 14th, 2008

O Papervision 2.0 por se encontrar em versão alpha está disponível para download apenas via SVN (subversion).

Para baixar via SVN, baixe o TortoiseSVN e o instale em seu micro, depois crie uma pasta, clique com o direito e selecione a opção SVN Checkout..., coloque em URL repository: http://papervision3d.googlecode.com/svn/trunk/branches/GreatWhite/, clique em OK e aguarde o cliente baixar todos os arquivos. Pronto!

O PPV3D 2.0 está sendo atualizado frequentemente, portanto de vez em quando clique com o direito sobre a pasta e selecione a opção SVN Update.. para os arquivos serem atualizados.

Exemplo de Cubo 3D usando Papervision 2.0 e Tweener

Wednesday, February 13th, 2008

This movie requires Flash Player 8.

Estava fazendo uma animação para ilustrar o post avisando que o curso está de volta a venda e fui me empolgando e cheguei num cubo interativo usando PPV3D e Tweener para a animação.

Basicamente é um cubo que rotaciona de acordo com o movimento do mouse, as faces foram preenchidas com uma imagem bitmap do CD do curso de AS3.

Neste exemplo eu usei PPV3D 2.0, lembrando que na versão 2.0 muitas coisas mudaram, portanto você precisa da versão 2.0 para reproduzir o exemplo.

Segue o script logo abaixo, e observe como é fácil usar 3D no Flash com a engine PPV3D.

PS: para rodar este exemplo, aplique um linkage btmCd em uma imagem bitmap na biblioteca.

Actionscript:
  1. import org.papervision3d.cameras.Camera3D;
  2. import org.papervision3d.materials.BitmapAssetMaterial;
  3. import org.papervision3d.materials.utils.MaterialsList;
  4. import org.papervision3d.objects.primitives.Cube;
  5. import org.papervision3d.render.BasicRenderEngine
  6. import org.papervision3d.scenes.Scene3D
  7. import org.papervision3d.view.Viewport3D;
  8. import caurina.transitions.Tweener;
  9.  
  10. var viewport:Viewport3D = new Viewport3D(0,0,true,true);
  11. addChild(viewport);
  12.  
  13. var cena:Scene3D = new Scene3D(true);
  14. var camera:Camera3D = new Camera3D();
  15. camera.zoom = 2.4;
  16. camera.z = -250;
  17. var render:BasicRenderEngine = new BasicRenderEngine();
  18.  
  19. var material:BitmapAssetMaterial = new BitmapAssetMaterial("btmCd");
  20. material.smooth = true;
  21.  
  22. var materials:MaterialsList = new MaterialsList({front: material,
  23.                                 back: material,
  24.                                 right: material,
  25.                                 left: material,
  26.                                 top: material,
  27.                                 bottom: material});
  28.  
  29. var cubo:Cube = new Cube(materials, 250, 250, 250, 4, 4, 4);
  30. cena.addChild(cubo);
  31.  
  32. addEventListener(Event.ENTER_FRAME, upRender);
  33.  
  34. function upRender(evt:Event):void
  35. {
  36.     Tweener.addTween(cubo, {rotationY: mouseX, time: 1});
  37.     Tweener.addTween(cubo, {rotationX: mouseY, time: 1});
  38.     this.render.renderScene(cena, camera, viewport);
  39. }

Parâmetro que Buga o ContextMenu no Flex 3

Friday, February 1st, 2008

Hoje sem dúvida a melhor forma para inserir o arquivo SWF no HTML é o SWFObject, porém perdi algumas horas está noite por ter setado um parâmetro via SWFObject em meu SWF.

Estou trabalhando numa aplicação em Flex, e não estava conseguindo inserir itens no menu direito, via ContextMenu, onde só funcionava qunado clicado sobre um objeto Text (selectable=true), depois de muitos testes lembrei que no HTML estava setado a propriedade menu=false que remove parcialmente os itens do menu direito, e após remover a seguinte linha tudo funcionou como deveria :D :

JavaScript:
  1. so.addParam('menu', 'false');

Para remover os itens do menu direito basta utilizar o método hideBuiltInItems() a classe ContextMenu:

Actionscript:
  1. var cm:ContextMenu = new ContextMenu();
  2. cm.hideBuiltInItems();
  3. this.contextMenu = this.cm;

Como já disse, uso o SWFObject para inserir o SWF no HTML, e por este motivo não testei se via tags HTML o bug também ocorre, o código HTML que citei é:

HTML:
  1. <param name="menu" value="false"/>

Se alguém testar, por favor me avise e eu edito o post e adiciono essa informação.

IMPORTANTE: Estou usando o Flex 3 Beta 3, portanto temos todos estes fatores a serem considerados, e pode ser que este bug não se reproduza no Flex 2 ou no Flash.

Mouse wheel para Flex no Mac OSX

Wednesday, January 16th, 2008

Meu micro principal é um Macbook, e desenvolvendo uma aplicação em Flex a falta do suporte ao Mouse wheel estava me chateando e resolvi partir para uma solução.

Encontrei diversas soluções, mas somente uma automática, que é o que eu preciso, habilitar o suporte a mouse wheel na aplicação. A solução foi encontrada no hasseg.org, muito simples de ser aplicado.

Primeiro inclua o javascript no html da página.
Obs: O swf está sendo incluído via SWFObject.

JavaScript:
  1. <script type="text/javascript">
  2.     var mw_flashMovieId = "flashMovie"; //id do seu swf
  3.     var mw_flashContainerId = "flashContainerDiv"; //id da div do seu swf
  4. </script>
  5. <script src="osxmousewheel.js" type="text/javascript"></script>

No Actionscript da sua applicação Flex:

Actionscript:
  1. import org.hasseg.externalMouseWheel.*;
  2. private var _mwSupport:ExternalMouseWheelSupport = ExternalMouseWheelSupport.instance;
  3.  
  4. ExternalMouseWheelSupport.registerAutomatically = true;

Pronto! Já está com o suporte ao mouse wheel e você pode também adicionar listener normalmente:

Actionscript:
  1. myBox.addEventListener(MouseEvent.MOUSE_WHEEL, function(event:MouseEvent):void {
  2.     t.text = ("Mouse wheel delta: "+event.delta);
  3. });

Exemplo rodando.

Código fonte do exemplo com o javascript e package dos scripts necessários.

E ainda uma documentação.

Curso de AS3 fechado até fevereiro

Wednesday, December 5th, 2007

Só para ficar avisado, o curso está fechado até fevereiro quando uma nova turma começará. Portanto quem quiser ir se agendando, fevereiro estamos de volta com o curso. =D

Papervision 3D, uma engine 3D para o Flash

Sunday, November 25th, 2007

O Papervision 3D trata-se de uma engine open-source (!) para Flash Platform. O primeiro beta a ser liberado foi em Julho deste ano. O time que escreveu a engine é formado por Carlos Ulloa, John Grden e Ralph Hauwert.

Abaixo segue um demo do que o Papervision 3D é capaz.

This movie requires Flash Player 8.

Alguns Links úteis:

Ultimamente estou mechendo bastante com PPV, portanto eu devo voltar a falar bastante sobre. :)