Away3D 4.0官网教程(翻译)

本帖隐藏的内容设置视图和渲染

当构建一个新的3D应用程序,首先要做的操作是创建View,它作为一扇窗户,透过它能看到3D世界。(顶级容器) 在最简单的情况下,您可以创建一个View3D的实例,并将它添加到显示列表。 添加以下五行代码到构造函数:

_view = new View3D();_view.backgroundColor = 0x666666; //设置视图的背景颜色_view.antiAlias = 4; //设置视图 抗锯齿的数量(设置的越高,平滑度越高,但是会影响性能)this.addChild(_view); //将视图添加到舞台上this.addEventListener(Event.ENTER_FRAME, onEnterFrame); //监听帧动画走动

复制代码

构造函数现在应该是这样了:

public function GettingStartedWithAway3D(){ _view = new View3D(); _view.backgroundColor = 0x666666; _view.antiAlias = 4; this.addChild(_view); this.addEventListener(Event.ENTER_FRAME, onEnterFrame);}

复制代码

当启用了antiAlias设置它的值2,4,或16 您指定硬件渲染器将通过使用一些边缘平滑,渲染每个像素。通常设置为4.

backgroundColor 可以定义View3D的背景色.

ENTER_FRAME监听器,监听动画的每一帧。 前面的代码示例包含一个ENTER_FRAME侦听器,所以你必须添加适当的监听器函数,比如这个:

private function onEnterFrame(ev : Event) : void{ _view.render();}

复制代码

这个函数 View3D的render()方法被调用到每一帧,这样可以在每一帧动画中去重绘view3D。

这就是基本的样板化代码用于大多数3D项目。您可以运行代码,可是现在的应用程序仅显示一个灰色的长方形。实际上,你看到的是空视图的背景颜色。

加载模型

Away3D 4加载外部资源的过程简单,并且极为万能。以后的教程中,我会对这一系统做更详细介绍。最简单的使用方法是,创建一个Loader3D类的实例,将其放进scene(场景),启动加载即可。这个过程类似于你原先使用flash.display.Loader类加载2D资源的方式。不过,你最好侦听相关事件,并在将loader添加到场景之前,检测加载是否成功。 向构造器添加下面5行。敲代码时,确保已经导入away3d.loaders.parsers.Parsers, away3d.events.LoaderEvent和flash.net.URLRequest。

Parsers.enableAllBundled(); _loader = new Loader3D();_loader.addEventListener(LoaderEvent.RESOURCE_COMPLETE, onResourceComplete);_loader.addEventListener(LoaderEvent.LOAD_ERROR, onLoadError);_loader.load( new URLRequest(‘vase.awd’));

复制代码

构造器应该像这样:

public function GettingStartedWithAway3D(){ _view = new View3D();_view.backgroundColor = 0x666666;_view.antiAlias = 4;this.addChild(_view); this.addEventListener(Event.ENTER_FRAME, onEnterFrame); Parsers.enableAllBundled();_loader = new Loader3D(); _loader.addEventListener(LoaderEvent.RESOURCE_COMPLETE, onResourceComplete); _loader.addEventListener(LoaderEvent.LOAD_ERROR, onLoadError);_loader.load( new URLRequest(‘vase.awd’) );}

复制代码

第一行会激活所有绑定的解析器。这是最简单的方法,因为你不用担心文件格式,但可能给你的SWF文件增加不必要的体积。 被指定为解析器的类负责将存储格式(像比OBJ 3D模型或JPEG图像)转化为引擎在运行时能够调用的格式。Away3D的解析器使用插件式的架构,也就允许你只嵌入项目需要的那部分,或者自己编写。并且,,这些解析器能够自动侦测文件格式,这意味着你不必预知要加载的文件类型。这和flash原生的Loader类使用方法相似,看起来并无新奇之处,但要知道,许多3D引擎(包括Away3D的早期版本)在加载不同文件格式时,使用的加载方式不尽相同。 上面代码接下来的4行,创建了一个Loader3D的实例,为预期的success和failure事件添加侦听,并且开始加载一个名为vase.awd的资源。

下面的函数演示了如何处理加载错误。向你的类添加下面7行:

private function onLoadError(ev : LoaderEvent) : void{trace(‘Could not find’, ev.url); _loader.removeEventListener(LoaderEvent.RESOURCE_COMPLETE, onResourceComplete);_loader.removeEventListener(LoaderEvent.LOAD_ERROR, onLoadError);_loader = null;}

复制代码

上面的代码使用trace语句将错误信息显示到输出面板并处理loader。为了是垃圾回收机制将loader从内存中清除,需要卸载所有的侦听。类似的,下面是success对应的处理函数:

人言未必皆真,听言只听三分。

Away3D 4.0官网教程(翻译)

相关文章:

你感兴趣的文章:

标签云: