[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 [email protected]
 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 }
时间: 2024-12-26 07:13:49

[ActionScript 3.0] Away3D 旋转效果的相关文章

[ActionScript 3.0] Away3D 天空盒(skybox)例子2

所谓skybox就是六个面即六张图能够无缝的拼成一个正方体的盒子. 1 package 2 { 3 import away3d.cameras.Camera3D; 4 import away3d.cameras.lenses.PerspectiveLens; 5 import away3d.containers.Scene3D; 6 import away3d.containers.View3D; 7 import away3d.controllers.HoverController; 8 im

[ActionScript 3.0] Away3D 官网实例

1 /* 2 3 Dynamic tree generation and placement in a night-time scene 4 5 Demonstrates: 6 7 How to create a height map and splat map from scratch to use for realistic terrain 8 How to use fratacl algorithms to create a custom tree-generating geometry

ActionScript 3.0 for the Lunder Algorithm

package com.feiruo.Calendar.LunderCalendar { /* *@ClassName: package:com.feiruo.Calendar.LunderCalendar::LunarDate *@INTRO: Calculating lunar and solar terms and other settings. *@Author: feiruo *@Language: ActionScript 3.0 *@SDKVersion: Flash Player

在 Flash ActionScript 2.0 中调用 Javascript 方法

本篇文章由:http://xinpure.com/call-the-javascript-method-in-flash-actionscript-2-0/ 在 Flash ActionScript 2.0 中调用 Javascript 方法 最近在工作中,有个这样的需求: 要从 Flash ActionScript 2.0 中调用网页上的 Javascript 方法 这是一个关于 Flash 和 Javascript 交互的问题. 在 ActionScript 2.0 中调用外部 javasc

ActionScript 3.0日期与时间管理(Date类)

/*Flash中,Date类管理着日期和时间信息.要获取   当前日期,可以新建一个Date对象   */var now:Date =new Date();trace (now);     /*输出当前时间和日期,格式如:                  Sun Jul 27 19:45:57 GMT+0800 2014  */ /*以上代码中,Date对象中包括了当前的秒.分.小时.  星期数.日.月.年.时区等信息...如果仅需要返  回星期值和日期值,而不返回时间或时区,可以使用Date

ActionScript 3.0数组操作

var arr:Array=new Array();arr=["a","b","c"];  //赋初值,注意这里的即使单个字符赋值使用的是""trace(arr[1]);       //获取成员信息trace(arr.length);    //获取数组中所包含的元素的个数 //接下来使用for循环逐个输出数组的每一个元素,这也称为数组的遍历var loopTime:int=arr.length;for (var i:int

[ActionScript 3.0] 正则表达式

正则表达式: 正则表达式最早是由数学家Stephen Kleene在对自然语言的递增研究成果的基础上,于1956提出来的.具有完整语法的正则表达式,主要使用在字符串的格式的匹配方面上,后来也逐渐应用到信息技术领域.不同的编程语言对于正则表达式有细微的不同,ActionScript 3.0是按照ECMAScript第3版语言规范(ECMA-262)中的定义实现正则表达式. 熟悉windows操作系统读者,应该知道windows中是怎样查找文件的.不错,使用通配符“*”用来匹配任意字符,“?”用来匹

ActionScript 3.0 加载外部SWF素材资源MovieClip,SimpleButton不支持鼠标事件

我们用flash buidler加载素材一般有三种途径: 1.SWC,这种方式会增大SWF的大小 2.flash cs项目关联 3.SWF专门放素材资源通过Loader方式加载 今天发现通过SWF加载方式有个问题要加载的素材如下图: A:是一个MC,里面放了一个B:mc,C:SimpleButton 问题:加载进A后对A添加鼠标事件如CLICK事件,单击B或C时没有反映? 开始我的加载方式是这样的: 目录结构如图: 代码如下: 1 package 2 { 3 import flash.displ

[ActionScript 3.0] as3处理xml的功能和遍历节点

as3比as2处理xml的功能增强了N倍,获取或遍历节点非常之方便,类似于json对像的处理方式. XML 的一个强大功能是它能够通过文本字符的线性字符串提供复杂的嵌套数据.将数据加载到 XML 对象时,ActionScript 会分析数据并将其分层结构加载到内存(如果 XML 数据格式有误,它会发送运行时错误). 利用 XML 和 XMLList 对象的运算符和方法可以轻松遍历 XML 数据的结构. 1.读取外部 XML 文档 可以使用 URLLoader 类从 URL 加载 XML 数据.若