ALK Armando Leopoldo Keller


Eventos em objetos com Papervision 2.0 (Great White)
10 Janeiro, 2008, 10:12 pm
Arquivado em: AS 3.0, Papervision 3D

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

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

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).

Comentário por alksk8

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

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.

Comentário por alksk8

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

Muito 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

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

Comentário por Paulo




Deixe um comentário
Linhas e parágrafos quebram automaticamente, endereços de email não serão mostrados, HTML permitido: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <pre> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>