Papervision 3D - Cube
Vamo lá, primeiro vamos organizar nossa pasta onde vai ficar o FLA. baixe essas classes aqui (serão necessárias para funcionar o arquivo). Agora dezipe os arquivos no diretório que você vai por o FLA.
Depois disso crie uma ou seis imagens com 200 x 200 pixels, eu deixei apenas uma imagem, mas é bom você fazer com 6 diferentes.
Ok, agora vamos ao flash, importe as imagens e transforme-as em MovieClip, na barra properties de cada MovieClip ponha o instance name de “face”, “face2″, “face3″, “face4″, “face5″ e “face6″, sem as aspas.
Ainda na barra de properties defina o blend como “Erase” para todos os MovieClips. e deixe-os no palco mesmo.
Agora vamos ao nosso código
View CodeACTIONSCRIPT | |
// importanto classes para o filme principal import org.papervision3d.scenes.*; import org.papervision3d.cameras.*; import org.papervision3d.objects.*; import org.papervision3d.objects.special.*; import org.papervision3d.objects.primitives.*; import org.papervision3d.materials.*; import org.papervision3d.materials.special.*; import org.papervision3d.materials.shaders.*; import org.papervision3d.materials.utils.*; import org.papervision3d.lights.*; import org.papervision3d.render.*; import org.papervision3d.view.*; import org.papervision3d.events.*; import org.papervision3d.core.utils.*; import org.papervision3d.core.utils.virtualmouse.VirtualMouse; // definindo nosso viewport var viewport:Viewport3D = new Viewport3D(0, 0, true, true); // adicionando o viewport addChild(viewport); viewport.buttonMode = true; // definindo o renderizador var renderer:BasicRenderEngine = new BasicRenderEngine(); // definindo o palco 3d var scene:Scene3D = new Scene3D(); // definindo camera var camera:Camera3D = new Camera3D(); camera.zoom = 11; camera.focus = 100; // definindo nosso movieclip para adicionar os MCS como material do cubo var mam:MovieMaterial = new MovieMaterial(face); mam.interactive = true; mam.smooth = true; mam.animated = true; var mam2:MovieMaterial = new MovieMaterial(face2); mam2.interactive = true; mam2.smooth = true; mam2.animated = true; var mam3:MovieMaterial = new MovieMaterial(face3); mam3.interactive = true; mam3.smooth = true; mam3.animated = true; var mam4:MovieMaterial = new MovieMaterial(face4); mam4.interactive = true; mam4.smooth = true; mam4.animated = true; var mam5:MovieMaterial = new MovieMaterial(face5); mam5.interactive = true; mam5.smooth = true; mam5.animated = true; var mam6:MovieMaterial = new MovieMaterial(face6); mam6.interactive = true; mam6.smooth = true; mam6.animated = true; // pegando as vars definidas e jogando na lista de materiais do cubo var cube:Cube = new Cube(new MaterialsList({front:mam, back:mam2, left:mam3, right:mam4,top:mam5, bottom:mam6}), 200, 200, 200, 10, 10, 10); scene.addChild(cube); // adicionando o evento loop para movimentação do quadrado addEventListener(Event.ENTER_FRAME, loop); // funcção do loop function loop(e:Event):void { var xDist:Number = mouseX - stage.stageWidth * 0.5; var yDist:Number = mouseY - stage.stageHeight * 0.5; cube.rotationY += xDist * 0.05; cube.rotationX += -yDist * 0.05; renderer.renderScene(scene, camera, viewport); } // definindo clique para cada lado do quadrado face.addEventListener(MouseEvent.CLICK, faceClick); function faceClick(e:MouseEvent):void { navigateToURL(new URLRequest("http://www.marceloduende.com.br")); } face2.addEventListener(MouseEvent.CLICK, face2Click); function face2Click(e:MouseEvent):void { navigateToURL(new URLRequest("http://www.marceloduende.com.br")); } face3.addEventListener(MouseEvent.CLICK, face3Click); function face3Click(e:MouseEvent):void { navigateToURL(new URLRequest("http://www.marceloduende.com.br")); } face4.addEventListener(MouseEvent.CLICK, face4Click); function face4Click(e:MouseEvent):void { navigateToURL(new URLRequest("http://www.marceloduende.com.br")); } face5.addEventListener(MouseEvent.CLICK, face5Click); function face5Click(e:MouseEvent):void { navigateToURL(new URLRequest("http://www.marceloduende.com.br")); } face6.addEventListener(MouseEvent.CLICK, face6Click); function face6Click(e:MouseEvent):void { navigateToURL(new URLRequest("http://www.marceloduende.com.br")); } | |
Agora compile seu filme e brinque a vontade
Para baixar o arquivo acima clique aqui


EXCELENTE!!
Muito bom o artigo muito obrigada
já agora se eu quiser 2 Links ou mais, por face do cubo, alguém sabe como fazer? Agradecia algum tipo de ajuda Obrigada.
já agora, como reduzo a velocidade do cubo?
Visiion, para botar dois links
function faceClick(e:MouseEvent):void
{
navigateToURL(new URLRequest(”http://www.marceloduende.com.br”));
navigateToURL(new URLRequest(”http://www.marceloduende.com.br”));
}
só adicionar um por função dai irá para duas páginas que você escolher.
Para diminuir a velocidade do cubo é só mudar os valores na função loop
function loop(e:Event):void
{
var xDist:Number = mouseX - stage.stageWidth * 0.5;
var yDist:Number = mouseY - stage.stageHeight * 0.5;
cube.rotationY += xDist * 0.01;
cube.rotationX += -yDist * 0.01;
renderer.renderScene(scene, camera, viewport);
}
Olá Marcelo… te encontrei por acaso. Parabéns! Foi um dos melhores achados da minha ida e vinda na internet. Você é o cara! Sem palavras.
Olá Marcelo tudo bem?!
Gostei muito do tuto, estou iniciando meus estudos com paper, queria saber no caso de usar a movimentação do cubo para criar a navegação de um site, e queria saber se tem como o cubo aparecer na Face1, aí quando voce clicar em qualquer area da primeira face ele vai pra face2 e assim em diante?!
Vlw ótimo tutorial!
Nossa tentei vários e nenhum tinha ficado tão perfeito e fácil, igual ao seu Marcelo.
obrigado por compartilhar.
Marcelo
vlw mesmo … 2 dias full time na net caçando um … o seu éo melhor !