zoukankan      html  css  js  c++  java
  • [ActionScript 3.0] Away3D 非skybox的全景例子

      1 package
      2 {
      3     import away3d.containers.View3D;
      4     import away3d.controllers.HoverController;
      5     import away3d.entities.Mesh;
      6     import away3d.materials.TextureMaterial;
      7     import away3d.primitives.SphereGeometry;
      8     import away3d.utils.Cast;
      9     
     10     import flash.display.Sprite;
     11     import flash.display.StageAlign;
     12     import flash.display.StageScaleMode;
     13     import flash.events.Event;
     14     import flash.events.MouseEvent;
     15     
     16     /**
     17      * @author Frost.Yen
     18      * @E-mail 871979853@qq.com
     19      * @create 2015-9-23 下午3:18:40
     20      *
     21      */
     22     [SWF(width='800',height='600',frameRate="60", backgroundColor="0x000000")]
     23 
     24     
     25     public class Away3dOverall extends Sprite
     26     {
     27         [Embed(source = "assets/1.jpg")]
     28         private static var BallMaterial:Class;
     29         private var _startX:Number;
     30         private var _startY:Number;
     31         private var _mouseX:Number;
     32         private var _mouseY:Number;
     33         private var _view:View3D;
     34         private var _cameraHoverController:HoverController;
     35         private var _sphere:SphereGeometry;
     36         private var _sphereMaterial:TextureMaterial;
     37         private var _mesh:Mesh;
     38         public function Away3dOverall()
     39         {
     40             if (stage) {
     41                 init();
     42             }else {
     43                 this.addEventListener(Event.ADDED_TO_STAGE, init);
     44             }
     45 
     46         }
     47         private function init(e:Event = null):void {
     48             stage.scaleMode = StageScaleMode.NO_SCALE;
     49             stage.align = StageAlign.TOP_LEFT;
     50             this.removeEventListener(Event.ADDED_TO_STAGE, init);
     51             
     52             _view = new View3D();
     53             addChild(_view);
     54             _view.antiAlias = 6;
     55             //摄像机渲染范围2000
     56             _view.camera.lens.far = 2000;
     57             
     58             _cameraHoverController = new HoverController(_view.camera, null, 90, 0, 300);
     59             _cameraHoverController.yFactor = 1;
     60             _sphere = new SphereGeometry(1000, 64);
     61             //_sphere.yUp = false;
     62             _sphereMaterial = new TextureMaterial(Cast.bitmapTexture(BallMaterial));
     63             _sphereMaterial.bothSides = true;
     64             _sphereMaterial.smooth = true;
     65             _mesh = new Mesh(_sphere, _sphereMaterial);
     66             //MeshHelper.invertFaces(_mesh);
     67             
     68             _view.camera.position = _mesh.position;
     69             
     70             _view.scene.addChild(_mesh);this.addEventListener(Event.ENTER_FRAME, onEnterFrame);
     71             stage.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownFunction);
     72             stage.addEventListener(MouseEvent.MOUSE_WHEEL, onWheel);
     73         }
     74         private function onWheel(e:MouseEvent):void 
     75         {
     76             if (e.delta > 0) {
     77                 if (_cameraHoverController.distance > 6) {
     78                     _cameraHoverController.distance -= 5;
     79                 }
     80             }else if (e.delta < 0) {
     81                 if (_cameraHoverController.distance < 600) {
     82                     _cameraHoverController.distance += 5;
     83                 }
     84             }
     85         }
     86         
     87         private function mouseDownFunction(e:MouseEvent):void 
     88         {
     89             _startX = _cameraHoverController.panAngle;
     90             _startY = _cameraHoverController.tiltAngle;
     91             _mouseX = mouseX;
     92             _mouseY = mouseY;
     93             stage.addEventListener(MouseEvent.MOUSE_MOVE,mouseMoveFunction);
     94             stage.addEventListener(MouseEvent.MOUSE_UP,mouseUpFunction);
     95         }
     96         
     97         private function mouseUpFunction(e:MouseEvent):void 
     98         {
     99             stage.removeEventListener(MouseEvent.MOUSE_MOVE,mouseMoveFunction);
    100             stage.removeEventListener(MouseEvent.MOUSE_UP,mouseUpFunction);
    101             //stage.addEventListener(MouseEvent.MOUSE_DOWN,mouseDownFunction);
    102         }
    103         
    104         private function mouseMoveFunction(e:MouseEvent):void 
    105         {
    106             _cameraHoverController.panAngle = (mouseX - _mouseX) * .3 + _startX;
    107             _cameraHoverController.tiltAngle = (mouseY - _mouseY) * .3 + _startY;
    108         }
    109         
    110         private function onEnterFrame(e:Event):void 
    111         {
    112             _view.render();
    113         }
    114 
    115     }
    116 }

    需要一张无缝全景图,像这样的:

  • 相关阅读:
    图书管理系统(view)前后端调联 (copy)
    图书管理系统(modelviewset)前后端调联
    工单系统表的设计
    初始化工单项目及配置
    重要概念 什么是web容器 Linux下安装部署njinx+uwsgi+django+vue
    ubuntu下安装docker django使用whoosh搜索引擎 使用es(elasticsearch)代替whoosh
    RBAC权限管理基本概念与实现
    Django支付宝(沙箱)后端接口
    使用七牛云上传 并将本地图片视屏上传
    展示课程
  • 原文地址:https://www.cnblogs.com/frost-yen/p/5000013.html
Copyright © 2011-2022 走看看