Flex+pv3d 打造三維全景圖 大 | 中 | 小

Flex+pv3d 做三維全景圖,需要找到一張全景照片,利用pv3d的立方體或球體貼圖即可輕鬆實現。這裏用的是球體,圖片是在網上找的,有興趣的朋友也可以自己做。

Flash Player文件



源碼:

package {
 import flash.events.Event;
 import flash.events.MouseEvent;
 import org.papervision3d.cameras.CameraType;
 import org.papervision3d.objects.primitives.Sphere;
 import org.papervision3d.view.BasicView;
 import org.papervision3d.materials.BitmapFileMaterial;
   
   //設置舞臺寬高、背景顏色、幀頻
[SWF (width="460", height="300", backgroundColor="0xffffff", frameRate="30")]

 public class pv3dwholeScene extends BasicView
 {
       private var sphere:Sphere;
       private var w:Number=460;
       private var h:Number=300;
       private var angleX:Number;
       private var angleY:Number;
       private var over:Boolean=false;
       
       public function pv3dwholeScene()
     {
          super(460,300,true, false,CameraType.FREE);
          init();
      }
       private function init():void
      {
          initObj();

  //註冊幀頻偵聽用於不斷刷新屏幕
        addEventListener(Event.ENTER_FRAME,onEnterFrame);

  //當鼠標移到舞臺時註冊偵聽
        stage.addEventListener(MouseEvent.MOUSE_OVER,onOver);

  //當鼠標移出舞臺時註冊偵聽
        stage.addEventListener(MouseEvent.MOUSE_OUT,onOut);
      }

        private function initObj():void
        {
        var material:BitmapFileMaterial=new BitmapFileMaterial("images/yourImage.jpg");
       
  //PV3D默認情況下不顯示背面,doubleSided屬性應設爲true
        material.doubleSided = true;
        material.smooth = true;
     
  //實例化球體 (由周長算出半徑 S=2*PI*R)
        sphere=new Sphere(material,98.68,20,20);
        scene.addChild(sphere);

  //把攝像機移到中心位置,PV3D攝像機的默認位置是camera.z=-1000
        camera.z=0;

  //攝象機的縮放參數,
        camera.zoom=.8;

  //攝象機的焦距
        camera.focus=300;
 }
 
    private function onEnterFrame(e:Event):void
    {
 
     if(over)
     {
   //當over是真時設置攝像機的旋轉角度
        var xm:Number=stage.mouseX;
        var ym:Number=stage.mouseY;
        angleX=(w/2-xm)*-.004;
        angleY=(h/2-ym)*-.002;
     }
     else
     {
   //當over是假時設置攝像機的旋轉角度爲0
        angleX=0;
        angleY=0;
      }
  // 旋轉攝像機
        camera.yaw(angleX);
        camera.pitch(angleY);
  //渲染
        singleRender();
 }

 private function onOver(event:MouseEvent):void
 {
  over=true;//鼠標移到場景上爲真
 }
 private function onOut(event:MouseEvent):void
 {
  over=false;//鼠標移出場景爲假
 }

}

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章