转自:http://www.cnblogs.com/nooon/archive/2009/05/16/1458334.html

原英文地址:

http://www.flashmagazine.com/Tutorials/detail/away3d_basics_a_simple_away3d_class_explained/

本教程是首部对Away3D (一款能够应用于Flash或Flex平台中的强大的实时三维引擎)进行系统介绍的文章。在此将对Away3D进行逐字逐句的解释,对于那些依然使用Acrionscript 2.0语言或有制图经验的朋友将能够很容易理解教程中的内容。

无论你想在Away3D里做什么,有几个"物件"是不可或缺的.在本基础指南里会解释场景Scene, 视口View, Camera照相机, Primitives基本元素, Textures材质和其它一些会用到的概念.指南里的每个例子都是基于as3脚本的.所以都可以在flash与flex运行.

如果你是3D菜鸟,你可能想要看我们关于三维核心概念的介绍。这篇教程中也含有其中6 个Away3D项目实例。运行实例文件前,你首先需要在您的计算机上设置Away3D开发环境。当设置好Away3D开发环境后,你只要把这些实例下载到你的项目文件夹上就可以打开、探索和调试这些实例。但由于采用高集成代码,这些例子都要用一个文件Cover.as。请先下载该文件到您的项目目录保证所有能够运行实例。 
通俗的讲,我们可以将计算机中的三维效果看作是一部电影。有四样东西是我们始终需要去牢记的,那就是Stage(舞台),Camera(摄影机),View(视角)以及所看到的内容。由于存在大量的"默认"属性,所以您在Away3D入门阶段只需建立一个来运行即可

最简单的Away3D类
 
以下是Away3D中最简单的类,它使用了默认的摄像头和舞台。
如果您对下面文件列表中的事件已经了解了,那么请跳转至下一教程。
而对于那些不太熟悉阅读Actionscript 3(AS3)代码的朋友们,我们将带领大家来理解这些语句。

1.package{
 2.       import away3d.containers.View3D;
 3.      import away3d.primitives.Sphere;
 4.       import flash.display.Sprite;
 5.       [SWF(width="500", height="400", frameRate="60", backgroundColor="#FFFFFF")]
 6.       public class Basic01 extends Sprite {
 7.             public function Basic01() {
 8.                    // 创建一个视口
 9.                   var View:View3D = new View3D({x:250,y:200});
 10.                   addChild(View);

11.                   // 在三维舞台中创建一个球体
 12.                  var sphere:Sphere = new Sphere();
 13.                   View.scene.addChild(sphere); 
 14.                   // 渲染视角
 15.                   View.render();
 16.              }
 17.        }
 18.    }

行 3-4:为了能够使用Away3D,我们需要将类的功能进行导入,这就要使用到标准Sprite类。

行 6: 这是我们示例类的名称。这个类扩展自Sprite类,也就是说它拥有所有sprite的特性。
行 7:一个与类同名的函数,这被我们称为"构造"函数。在我们每次创建新的类实例时,函数(Basic01)将被执行。

行 9-10: 在这里我们将创建一个三维视口,也就是能让我们看到的虚拟三维世界。X和Y的参数会告知Away3D在我们的三维世界中何处设置中心。

行 12-13:在这里我们将创建一个能够看到的简单球体。下一步,我们将这个球体加入到所能看到的默认三维场景中去(正如其他在Flash中的可视物体一样,只有添加到场景中才能看到)。

行 14:Away3D可以让您决定何时渲染视图。渲染指的是一个转换过程,将虚拟的三维内容转换为二维的可视对象。渲染是一个非常有用的密集型中央处理器进行,它能够决定何时进行更新。渲染视图会在当用户的鼠标移动到Flash影片上的时候进行。

其结果是这样的:

行 1:AS3要求所有的类必须在一个包中,简易起见,我们使用的是未命名包(默认包)

movie:Basic01.as

这时我们已经能够在Away3D中建立简单的三维场景了。当然,您可以消除这些注释,把大括号放在同一行,并删除空白行,但是这样代码更便于阅读。

如果您是初次接触AS3,您可能不知道Away3D该出现在舞台的何处,以及应当如何操作呢?由于这个类是默认的Sprite类,它的表现方式就像一个影片剪辑。在Sprites的影片剪辑上基本没有时间轴。由于类是基于Sprites的,所以它能够很容易的去更换舞台中的X和Y坐标,我们可以根据需要不断的去替换它们。

如果您在使用Flash时使用这个类文件(Basic01.as)作为您的Document Class-文档类(或者在Flex中用作"Default Application"-默认应用程序),那么这个扩展自Sprite的实例就会复制舞台中去。如果您对该类实例使用"addChild"的方法来添加其他的Sprites、影片剪辑或组添,这些将添加到该类实例里而非舞台上。如果您还想要在您的三维世界中显示其他内容的话,您只需添加到DisplayList(显示列表)后再添加到您的视口中去。就像其他的可视物体一样,您还可以通过使用setChildIndex或swapChildren的方法来切换显示层叠顺序。

接下来,我们将在所学基础之上做下拓展。从现在开始,我们将假设您已经知道AS3或者您已经知道该如何查找您所需要的AS3程序。

注意:假如你没有在flash里使用文档类的经验,请看这个教程。

Away3d 基础 1 ---对一个简单类的解释的更多相关文章

  1. 《Entity Framework 6 Recipes》翻译系列 (3) -----第二章 实体数据建模基础之创建一个简单的模型

    第二章 实体数据建模基础 很有可能,你才开始探索实体框架,你可能会问“我们怎么开始?”,如果你真是这样的话,那么本章就是一个很好的开始.如果不是,你已经建模,并在实体分裂和继承方面感觉良好,那么你可以 ...

  2. 容器基础(五): 实现一个简单容器sdocker

    在前面几部分的基础上, 我们更新一下代码,实现一个简单容器 sdocker. sdocker目录构成 linux: # tree . ├── Makefile ├── cpu-test.c # 由cp ...

  3. Win32编程API 基础篇 -- 2.一个简单的窗口 根据英文教程翻译

    一个简单的窗口 例子:简单的窗口 有时人们在IRC提问,”我应该怎样制作一个窗口”...嗯,这恐怕不是完全这么简单好回答!其实这并不难一旦你明白你在做什么,但在你得到一个可展示的窗口之前还有一些事情需 ...

  4. [安卓基础] 005.创建一个简单的UI

    *:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } ...

  5. Objective-C ,ios,iphone开发基础:快速实现一个简单的图片查看器

    新建一个single view 工程: 关闭ARC , 在.xib视图文件上拖放一个UIImageView  两个UIButton ,一个UISlider ,布局如图. 并为他们连线, UIImage ...

  6. 【BigData】Java基础_创建一个订单类

    需求描述 定义一个类,描述订单信息订单id订单所属用户(用户对象)订单所包含的商品(不定数量个商品对象)订单总金额订单应付金额:    总金额500~1000,打折85折    总金额1000~150 ...

  7. c++类的基本形式(一个简单类的简单sample,命名空间)

    有人把类说成是占用固定大小内存块的别名,其定义时不占用空间 #include<iostream> #include<string> using namespace std; c ...

  8. mxnet:基础知识和一个简单的示例

    NDArray与NumPy的多维数组类似,但NDArray提供了更多的功能:GPU和CPU的异步计算:自动求导.这使得NDArray能更好地支持机器学习. 初始化 from mxnet import ...

  9. 使用Unicode写文本文件:一个简单类的示例

    参考了http://forums.codeguru.com/showthread.php?457106-Unicode-text-file示例. class WOFSTREAM : public st ...

随机推荐

  1. IOS-开发日志-UILabel相关

    UILabel属性 1.text:设置标签显示文本. 2.attributedText:设置标签属性文本. Ios代码 NSString *text = @"first"; NSM ...

  2. 互联网金融爬虫怎么写-第一课 p2p网贷爬虫(XPath入门)

    版权声明:本文为博主原创文章,未经博主允许不得转载. 相关教程: 手把手教你写电商爬虫-第一课 找个软柿子捏捏 手把手教你写电商爬虫-第二课 实战尚妆网分页商品采集爬虫 手把手教你写电商爬虫-第三课 ...

  3. 数据挖掘-关联规则分析[ZZ]

    1.什么是关联规则 "尿布与啤酒"的故事大家都有听过,这里就不罗嗦了. 按常规思维,尿布与啤酒风马牛不相及,若不是借助数据挖掘技术对大量交易数据进行挖掘分析,沃尔玛是不可能发现数据 ...

  4. 01_JavaMail_04_带附件邮件的发送

    [工程截图] [代码实例] package com.Higgin.mail.demo; import java.io.File; import java.util.Properties; import ...

  5. docker 中搭建tomcat

    关于docker中tomcat的搭建,没有什么多说的,直接下载官方镜像 docker pull tomcat  (可能会下载到好几个镜像,就是tag不同,有知道为什么的可以告诉我) 然后我看的  ht ...

  6. jsp 嵌套iframe 从iframe中表单提交并传值到外层

    今天因需求迭代 更改元来代码 遇到了这么个问题 就是想在 iframe中提交后进行整个页面的跳转 并把iframe中的值传到外层jsp 大概就是这个样子 外层 a.jsp <div id=&qu ...

  7. IE6 png 透明 (三种解决方法)

    FF和IE7已经直接支持透明的png图了,下面这个主要是解决IE6下透明PNG图片有灰底的 ====================================================== ...

  8. easy ui tabs 顶部绑定事件

    $(function(){     $('#tb').tabs('bindclick', function(index, title){     }); }); $.extend($.fn.tabs. ...

  9. IE6背景图片闪动问题

    在IE6中,当JS触发事件时或者hover的时候,如果网速过慢 IE6背景图片重新加载会闪一下. 好的一个解决方案是 <!--[if IE 6]><script> try{do ...

  10. CentOS下Redis 2.2.14安装配置详解(转载)

    一. 下载redis最新版本2.2.14 cd /usr/local/src wget –c http://redis.googlecode.com/files/redis-2.2.14.tar.gz ...