Away3D带你360°漫游全景影像

时间:2023-12-05 09:59:02

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

Away3D带你360°漫游全景影像