Saio agora pouco um path da Away3D muito interessante, que possibilita você instalar e usar a nova tecnologia sem muito esforço.
Você vai precisar de:
Adobe Flex SDK 4.5.0.19786 ou superior
flashplayer_inc_playerglobal_022711.swc
molehill_away3d_path.zip
e Flash Develop
A versão de incubadora do flash player
Qualquer duvida vejam a vídeo aula do blog que originou essa matéria (em inglês) http://johnlindquist.com/2011/02/28/quickstart-for-molehill-and-away3d/
Instalação do player para Molehill
- Desinstale o flashplayer atual (Painel de controle / desinstalar programa)
- Instale o novo flashplayer
- Extraia o Adobe Flex SDK para uma pasta qualquer no C: de preferência.
- Pegue o arquivo flashplayer_int_playerglobal_022711.swc e renomeie para playerglobal.swc
- Vá na pasta c:\FlexSDK4.5.0.19786\frameworks\libs\player
- Nela você cria uma pasta e dê o nome de 10.1
- Cole o playerglobal.swc nela
- Extraia os arquivos do molehill_away3d_path.zip e cole os na pasta c:\FlexSDK4.5.0.19786
- Notara que ele irá pedir para substituir alguns arquivos, marque SIM para todos
- Crie um novo projeto AS3 no Flash Develop
- Na árvore do projeto clique no index.html para abrir o arquivo e olhe a linha 19
bgcolor: "#FFFFFF", // <- linha 19. nao esqueca a virgula wmode: "direct" // <- parametro para molehill
- Salve e feche esse arquivo
- Clique em Project e escolha Properties
- Deixe como na imagem
- Para p "Custom Command" clique em Edit e digite bin/index.html
- Clique em "Compiler Options"
- Clique do lado de Aditional Compiler Options vai aparecer um botão com "..." clique nele
- Digite essa linha:
- Dê Ok
package { // Primeiro de tudo os imports, que são os componentes usados // pelo Away3D, utilizando uma IDE como o FlashDevelop essas // linhas são preenchidas altomaticamente então não se preocupe // com elas. import away3d.lights.DirectionalLight; import away3d.materials.ColorMaterial; import away3d.primitives.Cube; import flash.display.Sprite; import flash.display.StageAlign; import flash.display.StageScaleMode; import flash.events.Event; import away3d.containers.View3D; import flash.text.TextField; import flash.utils.setInterval; /** * Teste para Away3D vs 4 e Molehill * para o blog http://tutoriaisedesenvolvimento.blogspot.com/ * * base * http://ultravisual.co.uk/blog/2011/03/22/more-molehill-away3d-fun/ * http://johnlindquist.com/2011/02/28/quickstart-for-molehill-and-away3d/ * * @author Marcos Augusto Bitetti ( marcosbiteti [at] gmail.com ) */ public class Main extends Sprite { // criamos alguns objetos, para o Away3D. O único realmente // importante é o View3D. // o objeto view é onde ocorre a renderização 3D private var view:View3D; // vamos animar um cubo private var cube:Cube; // um campo de texto apenas para exibir estatísticas private var inf:TextField; // nota: aos iniciantes, essas são variáveis de controle // elas não são os objetos que seus nomes sugerem // mas iremos crialos e adicionalos à elas adiante /*** * Este é um construtor, aqui o nosso filme se inicia. * Usamos ele para definir alguns valores básicos mas nada * realmente visual é bom fazer aqui, isto porque nosso objeto * acabou de ser criado, mas ainda não esta no palco! ***/ public function Main():void { // o Flashdevelop já cria essas linhas por padrão if (stage) init(); else addEventListener(Event.ADDED_TO_STAGE, init); } /*** * Como o nome já diz aqui iniciaremos o nosso filme. * todo o necessário para a Away3D vem agora. ***/ private function init(e:Event = null):void { // remove evento, essa linha também é colocada pelo FlashDevelop removeEventListener( Event.ADDED_TO_STAGE, init ); // Primeiro vamos dizer que o swf não deve sofrer alteração no seu // formato (largura x altura), para não haver distorção stage.scaleMode = StageScaleMode.NO_SCALE; // em seguida alinhamos o swf no canto esquerdo da janel stage.align = StageAlign.TOP_LEFT; // criamos nossa view view = new View3D(); // e adicionamos ela no palco addChild(view); // vamos criar uma luz var light:DirectionalLight = new DirectionalLight(0, -1, 1); // vamos dar uma cor para ela, quanto mais pura for a cor mais // forte a fonte de luz irá aparecer light.color = 0xaaaa30; // pronto, adicionamos ela na cena. // nota: o objeto view (View3D) possui uma cena incorporada e nela // inserimos os objetos. view.scene.addChild(light); // vamos criar um material, na versão 4 da Away3D tudo que precisamos // é de um ColorMaterial. // Damos a cor 0xff0000 (vermelho) e o alfa 1 (opaco); var mat:ColorMaterial = new ColorMaterial(0xff0000, 1); // definimos o valor da cor specular (brilho)*/ mat.specular = 1.0; // definimos a quantidade de cor ambiente que afeta o objeto // em geral considere isso a luz neutra do ambiente mat.ambient = 0.6; // geralmente a cor ambiente é um cinza (luz branca tenue) mat.ambientColor = 0x555555; // e adicionamos a luz que criamos anteriormente ao material // sem isso ele não renderiza a luz mat.lights = [light]; // nota: até aqui é muito familiar aos programas 3D, só que // setamos os valores na mão no lugar de potenciômetros // agora criamos o cubo cube = new Cube(mat); // e o colocamos na cena view.scene.addChild(cube); // agora um campo de texto para exibir dados inf = new TextField(); // setamos a cor do texto para branco inf.textColor = 0xffffff; // adicionamos ao palco, como ele esta sendo inserido após // o view ele vai aparecer imediatamente acima da vista 3D // pois o flash sobrepões os objetos em camadas addChild(inf); // agora registramos o evento ENTER_FRAME e apontamos a // função anim nele. Toda vez que um frame for atualizar // essa função sera chamada. addEventListener( Event.ENTER_FRAME, anim ); // criamos também uma chamada à função updateFramerate // para atualizar o contador de quadros. // ela sera disparada a cada 1/10 de segundo (1 seg = 1000) setInterval( updateFramerate, 100 ); } /** * Esta é a função que será chamada a cada frame (30 no nosso swf) * por padrão quando usamos o sistema de eventos da AS3 ele manda * sempre uma cópia do evento para a função. * @param e */ private function anim( e:Event ):void { // só para ilustrar vamos rodar o Cubo pelos seus eixos // ele vai fazer um movimento semelhante a um gimbau cube.rotationY += 5; cube.rotationZ += 2; cube.rotationX += 3; // agora atualizamos a view para aparecer nossa imagem view.render(); // incrementamos o contador de frames para vermos a performance frm ++; } /** * NOTA: Daqui em diante não é importante para usar Molehill */ // ** variáveis de apoio ** // contador de frames desenhados private var frm:int = 0; // marcador de tempo private var oTime:Date = new Date(); /** * Atualiza o mostrador de framerate */ private function updateFramerate():void { // t é igual a data atual var t:Date = new Date(); // pegamos a diferença em milisegundos entre a data atual // e oTime que é a ultima data analizada e jogamos em d var d:Number = t.getTime() - oTime.getTime(); // colocamos em oTime a data atual para ser usada na próxima vez oTime = new Date(); // calculamos a quantidade de frames por segundo var fr:Number = frm * (1000 / d); // jogamos no campo de texto inf inf.text = fr.toFixed(2).toString() + " / " + stage.frameRate ; // zeramos o contadoe de frames para começar o processo de novo frm = 0; // nota: é comum programadores usarem nas funções que são // chamadas por setInterval uma função chamada // updateAfterEvent() no entanto não há necessidade // de usala aqui já que ela forçaria uma atualização // desnecessária da tela, afinal o framerate já é bem // alto, não precisa gastar processamento atoa. } } }
Arquivos do tutorial
http://www.4shared.com/file/it_S0Wwe/molehill_tutorial.html
Nota sobre o framerate
Em 99,9% dos casos uma boa taxa de quadros (framerate) não deve ser superior a 30fps.
Usamos 60fps nesse tutorial com o fim de analizar a performace.
Nenhum comentário:
Postar um comentário