Bom, aqui vai um exemplo simples de como pegar eventos em objetos 3D (papervision), por exemplo clicar num cubo…
1º crie um AS chamado testando_papervision.as, e cole o seguinte codigo:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 | package { import flash.display.Sprite; import flash.events.Event; import flash.events.MouseEvent; import org.papervision3d.cameras.Camera3D; import org.papervision3d.materials.BitmapFileMaterial; import org.papervision3d.objects.Cube; import org.papervision3d.scenes.MovieScene3D; public class testando_papervision extends Sprite { public function testando_papervision() { var rodando = false; var cont:Sprite = new Sprite(); cont.x = stage.stageWidth * 0.5; cont.y = stage.stageHeight * 0.5; addChild(cont); var cena:MovieScene3D = new MovieScene3D(cont); var cam:Camera3D = new Camera3D(); cam.z = -500; cam.zoom = 5; var mat:BitmapFileMaterial = new BitmapFileMaterial("porquinho1.jpg"); mat.doubleSided = true; mat.smooth = true; var cubo:Cube = new Cube(mat,128,128,128); cena.addChild(cubo); cubo.container.addEventListener(MouseEvent.CLICK,roda); function roda(e:MouseEvent):void { if(rodando == false) { rodando = true } else { rodando = false } } this.addEventListener(Event.ENTER_FRAME,renderiza) function renderiza(e:Event):void { if(rodando == true) { cubo.rotationY +=5 } cena.renderCamera(cam); } } } } |
Depois crie um Fla vazio e em propriedades , Document Class, escreva: testando_papervision
coloque uma imagem com o nome de porquinho1.jpg com 128px por 128px na mesma pasta
salve tudo e compile o flash.
Quando você clicar no cubo, se ele estiver parado ele vai começar a rodar, e se ele estiver rodando vai parar.
Até a próxima, qualquer duvida comentem.
Qual a diferença entre “Great White” e PaperVision “normal” ?
Que as classes mudam ( constantemente ) de nome deu pra perceber …
Abraços
o “Great White” é o papervision 2.0 “normal”, só que alguns chamam de Great White, é tipo aqueles codinomes, por exemplo: “Astro” -> Flash player 10 , “Apollo” -> Adobe AIR.. e assim por diante.
Eu realmente gostei mais do papervision 2.0, o modo como é distribuido é pratico, e fácil de atualizar (por SVN).
Opa Keller, obrigado pela resposta
Mas o que tem acontecido comigo é que mesmo utilizando a última versão do Great White ( rev 417 ) eu recebo msgs de erro como por exemplo
1172: Definition org.papervision3d.scenes:MovieScene3D could not be found. ( só tem Scene3D )
1172: Definition org.papervision3d.objects:Cube could not be found. ( tenho que alterar para import org.papervision3d.objects.primitives.Cube )
etc …
Oi, cara vou te dar uma dica pra pra trabalhar com papervision, não edita o codigo no flash, o editor é muito fraco ainda.
Utilize o Flex(2 ou 3), ou o Flash Develop, ambos possuem a opção de de colocar as classpaths ( pasta que tem as classes que vão ser usadas no projeto), e não é necessário importar as classes, ao usar ela, o próprio programa já importa com o caminho correto, logo se a classe não existir você vai perceber, ou se ela mudar de lugar e você for criar um arquivo novo, ele já muda sozinho, se tiver alguma duvida de como fazer isso de uma olhada aqui: http://www.gotoandlearn.com/player.php?id=60
Um ótimo tutorial do Lee Brimelow de como usar o Flex pra programar para o flash.
Espero que isso ajude.
Opa Keller
hora eu uso o FlashDeveloper hora o Flash mesmo.
Mas em um ou outro eu ja deixo setado os classpaths no config do programa.
No FlashDeveloper, em Global ClassPaths.
No Flash, em Preferences >> ActionScript >> ActionScript 3.0 >> Caminho da(s) classe(s).
Assim as classes ficam disponíveis em qq lugar.
Não seto projeto por projeto.
O que estou dizendo é que classes, métodos, etc … variam demais – ou estou usando a classe errada ( papervision3d.googlecode.com/svn/ )
Muito bom. Estou a iniciar-me am papervision e isto ajudou e muito a minha iniciação.
Obrigado e continua o bom trabalho
1114: The public attribute can only be used inside a package.
recebo esse erro… oq estou fazendo de errado?
na linha 8 do as….
public class testando_papervision extends Sprite