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: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.
7 Comentários até o momento
Deixe um comentário
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <pre> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>
Qual a diferença entre “Great White” e PaperVision “normal” ?
Que as classes mudam ( constantemente ) de nome deu pra perceber …
Abraços
Comentário por Marco 10 Fevereiro, 2008 @ 1:54 amo “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.
Comentário por alksk8 10 Fevereiro, 2008 @ 9:35 amEu 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 …
Comentário por Marco 10 Fevereiro, 2008 @ 1:57 pmOi, cara vou te dar uma dica pra pra trabalhar com papervision, não edita o codigo no flash, o editor é muito fraco ainda.
Comentário por alksk8 10 Fevereiro, 2008 @ 5:07 pmUtilize 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/ )
Comentário por Marco 11 Fevereiro, 2008 @ 12:32 amMuito bom. Estou a iniciar-me am papervision e isto ajudou e muito a minha iniciação.
Obrigado e continua o bom trabalho
Comentário por Fábio 16 Março, 2008 @ 6:27 pm1114: The public attribute can only be used inside a package.
recebo esse erro… oq estou fazendo de errado?
na linha 8 do as….
Comentário por Paulo 16 Junho, 2008 @ 3:03 ampublic class testando_papervision extends Sprite