CacheManager. Caché y control de datos con AS3 Papervision3D, primeros pasos (3): Primitivas (objects.primitives)
jul 15

Como bién dice en la documentación de Papervision3D (traduzco), el BasicView es una clase que nos brinda una plantilla para configurar rápidamente un proyecto de Papervision, creando automáticamente un viewport, escena, cámara y renderer (bucle de renderización). Como BasicView es una subclase de Sprite, la podemos añadir a cualquier DisplayObject.

En resumen: te facilita la vida para proyectos sencillos, evitando instanciar y declarar unas cuantas cosas.
La clase la podéis encontrar dentro del package “view” de Papervision3D Great White.

Veamos el mismo ejemplo del post “Papervision3D y Flex Builder: Primeros pasos“, pero ahora usando la clase “BasicView”. He quitado todos los comentarios que no vienen al caso para centrarnos en lo importante:

/**
 * Author: xleon, http://www.xinterface.net (malandro@gmail.com)
 */
package
{
	import flash.display.Sprite;
	import flash.events.Event;
 
	import org.papervision3d.cameras.Camera3D;
	import org.papervision3d.materials.WireframeMaterial;
	import org.papervision3d.objects.primitives.Plane;
	import org.papervision3d.scenes.Scene3D;
	import org.papervision3d.view.BasicView;
 
	[SWF(frameRate="31", width="500", height="350", backgroundColor="0xffffff")]
 
	public class BasicViewSample extends Sprite
	{
        private var bView:BasicView;
 
		public function BasicViewSample()
		{
			Init3D();
		}
 
		private function Init3D():void
		{
			// Creamos el BasicView que contiene viewport, camera, renderer, etc
			bView = new BasicView(500, 350, false, false);
 
			// añadimos la vista al displayList
			addChild(bView);
 
			// Configuramos la cámara:
			bView.camera.focus = 25;
            bView.camera.zoom = 10;
            bView.camera.z = -500;
            bView.camera.y = 300;
            bView.camera.x = 0;
 
			CreateObjects();
			addEventListener(Event.ENTER_FRAME, Loop3D);
		}
 
		private function CreateObjects():void
		{
			var mat:WireframeMaterial = new WireframeMaterial;
			mat.doubleSided = true;
 
			var plane:Plane = new Plane(mat, 500, 500, 8, 8);
			plane.rotationX = -90;
 
			// lo añadimos a la escena del BasicView.
			bView.scene.addChild(plane);
 
			//camera.target = plane;
		}
 
		private function Loop3D(e:Event):void
		{
			var radio:uint = 500;
			var angulo:Number = mouseX + (stage.stageWidth / 2);
 
			Camera3D(bView.camera).x = radio * Math.cos(angulo / 100);
			Camera3D(bView.camera).z = radio * Math.sin(angulo / 100);
			Camera3D(bView.camera).y = - mouseY + (stage.stageHeight / 2) + 100;
 
			// llamamos al método de renderizado del BasicView:
			bView.singleRender();
		}
	}
}

El resultado es el mismo pero con menos código =)

Descargar la clase aquí: BasicViewSample.as

Comments are closed.