Programação
actionscript 3 + Papervision 2.0 - Cubo Interactivo
//papervision 2.0 //the greatWhite //baseado num tutorial de Lee Brimelow //--------------------------------------------------------------------------------- //IMPORTA AS CLASSES.. 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; //--------------------------------------------------------------------------------- //--------------------------------------------------------------------------------- //o container do 3D é uma instância da classe Viewport //Viewport3D( width:INT , height:INT , scaleToStage:Boolean , isInteractive:Boolean ) var viewport:Viewport3D = new Viewport3D(0 , 0, true , true ); addChild( viewport ); viewport.buttonMode = true; //--------------------------------------------------------------------------------- //--------------------------------------------------------------------------------- //CRIAR UM RENDER ENGINE.. var renderer:BasicRenderEngine = new BasicRenderEngine(); //CRIAR A CENA var scene:Scene3D = new Scene3D(); //CRIAR A CAM var camera:Camera3D = new Camera3D(); //AJUSTA A CAM AO STAGE camera.zoom = 11; camera.focus = 100; //--------------------------------------------------------------------------------- //--------------------------------------------------------------------------------- //MATERIAIS //uma instancia da classe Face q está na library var f:Face = new Face(); f.alpha = 0.8; var mm:MovieMaterial = new MovieMaterial( f ); //é interactivo? mm.interactive = true; //tem animação? mm.animated = true; //suaviza o material mm.smooth = true; //new MaterialList( { front:mm, left:mm, right:mm, top:mm, bottom:mm, back:mm } ) , width , depth , height , trianglesOfPlaneX , trianglesOfPlaneY , trianglesOfPlaneZ ); var cube:Cube = new Cube( new MaterialsList( { front:mm, left:mm, right:mm, top:mm, bottom:mm, back:mm } ) , 200 , 200 , 200 ); //--------------------------------------------------------------------------------- //--------------------------------------------------------------------------------- //cria a interactividade com o rato e rende a scene addEventListener( Event.ENTER_FRAME , loop ); function loop(e:Event):void { //calcula a distancia do rato var xDist:Number = mouseX - stage.stageWidth * 0.5; var yDist:Number = mouseY - stage.stageHeight * 0.5; cube.rotationX += yDist * 0.02; cube.rotationY += yDist * 0.02; cube.rotationZ += yDist * 0.02; cube.z += yDist * 0.1; rotY.text = 'rotação Y = ' + Math.round ( cube.rotationY ).toString(); rotX.text = 'rotação X = ' + Math.round ( cube.rotationX ).toString(); posZ.text = 'posição Z = ' + Math.round ( cube.z ).toString(); //rende.renderScene( qualCena, qualCamera , qualViewport); renderer.renderScene( scene, camera , viewport); } //--------------------------------------------------------------------------------- //--------------------------------------------------------------------------------- //lida com o click f.addEventListener( MouseEvent.CLICK , clickHandler ); function clickHandler(e:Event):void { trace( e.target ); //do this and do that.. e.target.play(); } //--------------------------------------------------------------------------------- //--------------------------------------------------------------------------------- //addChild.. scene.addChild( cube ); //---------------------------------------------------------------------------------