Eventos em objetos com Papervision 2.0 (Great White)

0saves

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.

7 Responses to “Eventos em objetos com Papervision 2.0 (Great White)”

  1. Marco disse:

    Qual a diferença entre “Great White” e PaperVision “normal” ?

    Que as classes mudam ( constantemente ) de nome deu pra perceber …

    Abraços

  2. alksk8 disse:

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

  3. Marco disse:

    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 …

  4. alksk8 disse:

    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.

  5. Marco disse:

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

  6. Fábio disse:

    Muito bom. Estou a iniciar-me am papervision e isto ajudou e muito a minha iniciação.

    Obrigado e continua o bom trabalho

  7. Paulo disse:

    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

Leave a Reply