天天看点

papervision3D模板(smart Program)

翻译来自 : Papervision3D Essentials

codes :

不用BasicView 时:

package {

 import flash.display.Sprite;// 在以后的程序中,我们将会让文档类继承pv3d内置的BasicView类。

 import flash.events.Event;

 import org.papervision3d.cameras.Camera3D;

 import org.papervision3d.objects.primitives.Sphere;

 import org.papervision3d.render.BasicRenderEngine;

 import org.papervision3d.scenes.Scene3D;

 import org.papervision3d.view.Viewport3D;

 public class FirstApplication extends Sprite {

  private var scene:Scene3D;

  private var viewport:Viewport3D;

  private var camera:Camera3D;

  private var renderEngine:BasicRenderEngine;

  private var sphere:Sphere;

  public function FirstApplication() {

   stage.frameRate=40;//在pv3d  帧频要设置为40 ,这为最佳 ! 此句一般放在构造函数的第一句

   scene = new Scene3D();

   camera = new Camera3D();

   sphere = new Sphere();

   scene.addChild(sphere);

   viewport = new Viewport3D();

   addChild(viewport);

   renderEngine = new BasicRenderEngine();

   this.addEventListener(Event.ENTER_FRAME,handleEnterFrame);

  }

  private function handleEnterFrame(e:Event):void {

   sphere.localRotationY+=2;

   sphere.localRotationX+=2;

   sphere.localRotationZ+=2;//实现旋转

   renderEngine.renderScene(scene,camera,viewport);//其作为渲染用,只执行一次!故放在enterFrame事件中。

  }

 }

}

使用BasicView    <可以把下面的代码当做模板使用,简洁代码>  :

package {

 import flash.events.Event;

 import org.papervision3d.objects.primitives.Sphere;

 import org.papervision3d.view.BasicView;

 public class BasicViewExample extends BasicView {

  private var sphere:Sphere;

  public function BasicViewExample() {

   stage.frameRate=40;

   //下面只需定义3D对象, 在将其add到scene中

   sphere = new Sphere();

   scene.addChild(sphere);

   startRendering();//创建secne3D basicRenderEngine  viewPort3D camera3D 

  }

  // 重写 onRenderTick 及其 调用父类onRenderTick ;

  override protected function onRenderTick(e:Event=null):void {

   sphere.localRotationY+=1;//旋转轴

   super.onRenderTick();//开始渲染

  }

 }

}

继续阅读