• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
james1207

博客园    首页    新随笔    联系   管理    订阅  订阅

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效果预览

 

posted @ 2013-09-11 19:09  Class Xman  阅读(273)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3