BasicView类,AbstractView类,IView接口
package org.papervision3d.view{import org.papervision3d.cameras.SpringCamera3D;import org.papervision3d.cameras.Camera3D;import org.papervision3d.cameras.CameraType;import org.papervision3d.cameras.DebugCamera3D;import org.papervision3d.core.view.IView;import org.papervision3d.objects.DisplayObject3D;import org.papervision3d.render.BasicRenderEngine;import org.papervision3d.scenes.Scene3D;/** * <p> * BasicView provides a simple template for quickly setting up * basic Papervision3D projects by creating a viewport, scene, * camera, and renderer for you. Because BasicView is a subclass of * Sprite, it can be added to any DisplayObject. * * </p> * * <p> * <p> * Example: * </p> * <pre><code> * var width:Number = 640; * var heigth:Number = 480; * var scaleToStage:Boolean = true; * var interactive:Boolean = true; * var cameraType:String = Camera3D.TYPE; * * var myBasicView:BasicView = new BasicView(width, height, scaleToStage, interactive, cameraType); * myDisplayObject.addChild(myBasicView); * </code></pre> * </p> * @author Ralph Hauwert */public class BasicView extends AbstractView implements IView{/** * @param viewportWidthWidth of the viewport * @param viewportHeightHeight of the viewport * @param scaleToStageWhether you viewport should scale with the stage * @param interactiveWhether your scene should be interactive * @param cameraTypeA String for the type of camera. @see org.papervision3d.cameras.CameraType * */public function BasicView(viewportWidth:Number = 640, viewportHeight:Number = 480, scaleToStage:Boolean = true, interactive:Boolean = false, cameraType:String = "Target"){super();scene = new Scene3D();viewport = new Viewport3D(viewportWidth, viewportHeight, scaleToStage, interactive);addChild(viewport);renderer = new BasicRenderEngine();switch(cameraType){case CameraType.DEBUG:_camera = new DebugCamera3D(viewport);break;case CameraType.TARGET:_camera = new Camera3D(60);_camera.target = DisplayObject3D.ZERO;break;case CameraType.SPRING:_camera = new SpringCamera3D();_camera.target = DisplayObject3D.ZERO;break;case CameraType.FREE:default:_camera = new Camera3D(60);break;}cameraAsCamera3D.update(viewport.sizeRectangle);} /** * Exposes the camera as a <code>Camera3D</code> */ public function get cameraAsCamera3D():Camera3D { return _camera as Camera3D; } /** * Exposes the camera as a <code>DebugCamera3D</code> */ public function get cameraAsDebugCamera3D():DebugCamera3D { return _camera as DebugCamera3D; }}}package org.papervision3d.view{import flash.display.Sprite;import flash.events.Event;import org.papervision3d.core.proto.CameraObject3D;import org.papervision3d.core.view.IView;import org.papervision3d.render.BasicRenderEngine;import org.papervision3d.scenes.Scene3D;/** * @Author Ralph Hauwert */public class AbstractView extends Sprite implements IView{protected var _camera:CameraObject3D;protected var _height:Number;protected var _width:Number;public var scene:Scene3D;public var viewport:Viewport3D;public var renderer:BasicRenderEngine;public function AbstractView(){super();}public function startRendering():void{addEventListener(Event.ENTER_FRAME, onRenderTick);viewport.containerSprite.cacheAsBitmap = false;}public function stopRendering(reRender:Boolean = false, cacheAsBitmap:Boolean = false):void{removeEventListener(Event.ENTER_FRAME, onRenderTick);if(reRender){onRenderTick();}if(cacheAsBitmap){viewport.containerSprite.cacheAsBitmap = true;}else{viewport.containerSprite.cacheAsBitmap = false;}}public function singleRender():void{onRenderTick();}protected function onRenderTick(event:Event = null):void{renderer.renderScene(scene, _camera, viewport);}public function get camera():CameraObject3D{return _camera;}public function set viewportWidth(width:Number):void{_width = width;viewport.width = width;}public function get viewportWidth():Number{return _width;}public function set viewportHeight(height:Number):void{_height = height;viewport.height = height;}public function get viewportHeight():Number{return _height;}}}package org.papervision3d.core.view{/** * @Author Ralph Hauwert */public interface IView{function singleRender():void;function startRendering():void;function stopRendering(reRender:Boolean = false, cacheAsBitmap:Boolean = false):void;}}??