• [ActionScript 3.0] Away3D 旋转效果


      1 package
      2 {
      3     import away3d.containers.View3D;
      4     import away3d.entities.Mesh;
      5     import away3d.events.MouseEvent3D;
      6     import away3d.materials.TextureMaterial;
      7     import away3d.primitives.PlaneGeometry;
      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     
     15     /**
     16      * @author Frost.Yen
     17      * @E-mail 871979853@qq.com
     18      * @create 2015-9-23 下午2:58:55
     19      *
     20      */
     21     [SWF(width='800',height='600',frameRate="60", backgroundColor="0x000000")]
     22 
     23     public class Away3dRoll extends Sprite
     24     {
     25         //floor的贴图图片
     26         [Embed(source = "assets/1.jpg")]
     27         private static var FloorMaterial:Class;
     28         //创建视口
     29         private var _view:View3D;
     30         //创建平面几何对象
     31         private var _planeGeometry:PlaneGeometry;
     32         //创建平面几何对象的容器
     33         private var _planeMesh:Mesh;
     34         //控制旋转方向的变量
     35         private var _direction:Boolean;
     36         public function Away3dRoll()
     37         {
     38             //侦听舞台初始化完毕
     39             if (stage) {
     40                 init();
     41             }else {
     42                 this.addEventListener(Event.ADDED_TO_STAGE, init);
     43             }
     44 
     45         }
     46         private function init(e:Event=null):void {
     47             //trace("舞台初始化完成!");
     48             //设置舞台缩放模式和对齐方式
     49             stage.scaleMode = StageScaleMode.NO_SCALE;
     50             stage.align = StageAlign.TOP_LEFT;
     51             this.removeEventListener(Event.ADDED_TO_STAGE, init);
     52             
     53             //实例化视口
     54             _view = new View3D();
     55             addChild(_view);
     56             //设置抗锯齿参数
     57             _view.antiAlias = 2;
     58             
     59             //实例化一个长宽都是300的平面对象
     60             _planeGeometry = new PlaneGeometry(300, 300);
     61             //实例化平面几何对象的容器,第一个参数是平面几何对象,第二个参数是贴图数据
     62             _planeMesh = new Mesh(_planeGeometry, new TextureMaterial(Cast.bitmapTexture(FloorMaterial)));
     63             //设置容器可交互
     64             _planeMesh.mouseEnabled = true;
     65             //容器侦听鼠标点击事件
     66             _planeMesh.addEventListener(MouseEvent3D.CLICK, clickHandler);
     67             
     68             //将容器添加到视口的场景中
     69             _view.scene.addChild(_planeMesh);
     70             
     71             //设置摄像机的位置
     72             _view.camera.z = -400;
     73             _view.camera.y = 260;    //可以把这个值改成1试试看,这样可以有更加直观的感受
     74             //_view.camera.x = 90;
     75             //设置摄像机始终指向平面
     76             _view.camera.lookAt(_planeMesh.position);
     77             //_view.camera.lookAt(new Vector3D());
     78             
     79             this.addEventListener(Event.ENTER_FRAME, onEnterFrame);
     80             stage.addEventListener(Event.RESIZE, onResize);
     81             onResize();
     82         }
     83         
     84         private function clickHandler(e:MouseEvent3D):void {
     85             //鼠标点击变换运动方向
     86             _direction = !_direction;
     87         }
     88         
     89         private function onResize(e:Event = null):void {
     90             //调整视口尺寸以适应新的窗口大小
     91             _view.width = stage.stageWidth;
     92             _view.height = stage.stageHeight;
     93         }
     94         
     95         private function onEnterFrame(e:Event):void {
     96             //判断方向旋转
     97             if (!_direction) {
     98                 _planeMesh.rotationY += 1;
     99             }else {
    100                 _planeMesh.rotationY -= 1;
    101             }
    102             //渲染3D世界
    103             _view.render();
    104         }
    105 
    106     }
    107 }
  • 相关阅读:
    使用组合逻辑电路驱动VGA显示器
    M9K内存使用教程
    DE10Lite锁相环使用教程
    FPGA最大工作频率教程
    DE10Lite输入/出高/低电平说明
    DE10Lite加速度计使用教程
    构建和调试电路的技巧
    各种常用校验码算法
    Java生成文件摘要
    经济 stone
  • 原文地址:https://www.cnblogs.com/frost-yen/p/4999988.html
Copyright © 2020-2023  润新知