Away3D带你360°漫游全景影像

1代码展示

package

{

	import away3d.containers.View3D;

	import away3d.controllers.HoverController;

	import away3d.entities.Mesh;

	import away3d.materials.TextureMaterial;

	import away3d.primitives.SphereGeometry;

	import away3d.textures.BitmapTexture;

	

	import flash.display.Loader;

	import flash.display.Sprite;

	import flash.events.Event;

	import flash.events.KeyboardEvent;

	import flash.events.MouseEvent;



	[SWF(width='1024',height='512',frameRate='60')]

	public class Study05 extends Sprite

	{

		[Embed(source='/../embeds/pano_sphere.jpg')]

		private var _pano:Class;

		

		private var _startX:Number;

		private var _startY:Number;

		private var _mouseX:Number;

		private var _mouseY:Number;

		private var _view:View3D;

		private var _hover:HoverController;

		private var _mesh:Mesh;

		private var _sphere:SphereGeometry;

		private var _material:TextureMaterial;

		private var _bitmap:BitmapTexture;

		private var _delta:int;

		

		public function Study05()

		{

			_view = new View3D();

			addChild(_view);

			_view.camera.lens.far = 2000; // 设置照相机的渲染上限(不能低于球半径)

			_bitmap = new BitmapTexture(new _pano().bitmapData);

			_sphere = new SphereGeometry(1000,32,32);

			_material = new TextureMaterial(_bitmap);

			_material.bothSides = true;

			_mesh = new Mesh(_sphere,_material);

			_hover = new HoverController(_view.camera,null,90,0,300);

			_view.scene.addChild(_mesh);

			stage.addEventListener(MouseEvent.MOUSE_DOWN,mouseDownFunction);

			stage.addEventListener(MouseEvent.MOUSE_UP,onUpHandler);

			stage.addEventListener(MouseEvent.MOUSE_WHEEL,onWheelHandler);

			addEventListener(Event.ENTER_FRAME,onLoopHandler);

		}

		

		

		protected function onWheelHandler(event:MouseEvent):void

		{

			_delta+=event.delta;

			_hover.distance=_delta;

			//trace(del);

		}

		

		protected function onUpHandler(event:MouseEvent):void

		{

			stage.removeEventListener(MouseEvent.MOUSE_MOVE,mouseMoveFunction);

		}		

		

		private function mouseDownFunction(event:MouseEvent):void

		{

			

			_startX = _hover.panAngle;

			_startY = _hover.tiltAngle;

			_mouseX = mouseX;

			_mouseY = mouseY;

			stage.addEventListener(MouseEvent.MOUSE_MOVE,mouseMoveFunction);

			//stage.addEventListener(MouseEvent.MOUSE_UP,mouseUpFunction);

		}

		

		private function mouseMoveFunction(event:MouseEvent):void

		{

			_view.camera.x=_delta;

			_hover.panAngle = (mouseX - _mouseX) * .3 + _startX;

			_hover.tiltAngle = (mouseY - _mouseY) * .3 + _startY;

		}

		

		protected function onLoopHandler(event:Event):void

		{

			_view.render();

		}

	}

}

2效果预览

 

你可能感兴趣的:(360)