您的位置:首页 > 编程语言 > Go语言

Dragon-Studio 之 Flash Alternativa 3D引擎 基础教程-4.Bonjour Alt

2010-12-30 21:39 387 查看
原文:http://www.bcia-bag.com/article/ZMTEyMDg=.html

*申明:教程中用到的3D引擎Alternativa均以非盈利教学为目的,不得用于任何商业用途。如要购买正版请访问官网网站: http://alternativaplatform.com/en/
一起来就12点了。。。呵呵。乘着还有时间,还是再发一次教程吧。作为基础教程的最后一章,同时也是本周更新的最后一次教程了。到下周在更新新的教程,进入进阶篇。
像所有的教程一样,第一个例子就是Hello,我们也做第一例子,叫做你好Alternativa,翻译成法语就是Bonjour Alt,就以它为我们的第一个实例吧。
一.建立Flash主文件,绑定文档类

1. 在Flash建立一个新的AS3文件,命名为Bonjour_Alt.fla,并与上一章建立的类库文件夹lib保存在同一个目录中。



2. 再用Flash建立一个AS3脚本文件(新建方法,见上一章),也保存在这个目录下。



3.然后从Flash中打开Bonjour_Alt.fla文件。在:属性-->文档属性面板中“类”一栏里,填入建立的文档类:



不需要添加后缀名.as。
二.编写文档类

打开文档类文件Bonjour_Alt.as,下面就要编写文档类了。
文档类源文件如下:
package

{

import lib.*;

//导入上一章中我们建立的类库,该文档类就可以使用其中建立的类了。

//导入Flash要用到的相关的类

import flash.display.Sprite;

import flash.events.Event;

import flash.display.Stage;

import flash.display.BlendMode;

import flash.display.StageAlign;

import flash.display.StageScaleMode;

import flash.display.StageQuality;


//导入A3D要用到的相关的类

import alternativa.engine3d.primitives.Box
//A3D中自带的立方体类

import alternativa.utils.FPS;
//A3D中显示当前swf文件帧速与内存占用量的仪表盘,用于测试程序

import alternativa.engine3d.materials.FillMaterial;
//A3D的材质类中的一种

//设置播放器初始属性,背景颜色黑色,帧频100Fps,大小800*600

[SWF(backgroundColor = "#000000",frameRate = "100", height = 600, width = 800)]

public class Bonjour_Alt extends AltBasse

//申明文档类,其名称必须与该文件名一致,并且继承自上一章建立的基类AltBasse

{

private var box:Box;

//申明一个立方体对象



public function Bonjour_Alt()

//构造函数,名称要与文件名,类名一致

{

super();

//调用父类中的构造函数



stage.scaleMode = StageScaleMode.NO_SCALE;

//设置舞台缩放模式为 不缩放

stage.align = StageAlign.TOP_LEFT;
//设置舞台对其模式为 左上对其

stage.quality = StageQuality.HIGH;
//设置swf影片质量为 高



addEventListener(Event.ADDED_TO_STAGE, init);

//注册一个监听器,监听ADDED_TO_STAGE事件,就是文档类导入舞台的事件,并用一个初始化函数作为响应(通常程序员都将初始化函数命名为init)

}


//事件响应函数,即初始化函数

private function init(e:Event):void

{

removeEventListener(Event.ADDED_TO_STAGE, init);

//移除事件监听器,因为文档类的ADDED_TO_STAGE事件只发生一次,继续监听没有必要,所以移除事件堆栈



box = new Box(100,100,100,3,3,3);

//实例化一个立方体三维对象,长宽高 都为100, 长宽高三个方向的网格数量都为3(在进阶篇中,将详细讲解各个三维对象的生成函数,级网格的概念)

box.cloneMaterialToAllSurfaces(new FillMaterial(0x00FF00,1,BlendMode.NORMAL,3,0xFFFFFF));
//为这个立方体的所有表面添加同样的材质:颜色填充类材质。设置填充颜色为绿色,透明度1,线条颜色为白色,宽度3,混合模式为普通



scene.root.addChild(box);

//将这个立方体加入到场景中,这样才能看见立方体(参见基础教程的第二章)
// 设置摄像机位置
camera.x = 100;

camera.y=-150;

camera.z= 100;

cameraController.lookAt(box.coords);

//制定摄像机观察点,其中box.coords为Point3D的一个实例

FPS.init(stage);
//加入A3D的仪表板

cameraController.controlsEnabled = true;
//设置摄像机控制器打开



stage.addEventListener(Event.ENTER_FRAME,OnEnterFrame);

//注册一个监听器,用于实时渲染

}

private function OnEnterFrame(e:Event):void

//事件响应函数,用来实时渲染

{

cameraController.processInput();

//设置用户输入模式为摄像机控制器模式(原理将会在进阶篇中讲解)

scene.calculate();
//scene的渲染计算

}

}

}


写好文档类之后,保存一下,然后 Ctrl+Enter
就可以看见一个可爱的立方体了。可以在我关联的作品里查看。可以用A,S,W,D键,上下左右键,及鼠标控制(这都是因为我们打开了摄像机控制器)。不
过,要注意的是,虽然看上去我们在控制这个立方体,但实际上,我们是在控制摄像机(请参见基础教程第二章)。
关联作品:http://www.zcool.com.cn/work/ZMjk3MTk2.html

三.小结

下面总结一下,应用基类编写文档类的步骤:
导入所需的类
继承基类

(设置播放器属性)
定义三维对象

添加三维对象到场景

制定摄像机观察点

打开摄像机

添加实时渲染函数

如果说,我们没有编写之前的基类文件,可想而知,现在的文档类写起来要复杂的多,而有了文档类,我们继承之后,可以直接访问其受保护(或是公共)的方法。
学完了这基础教程的第四章,我还是建议你请看后面的本章总结与练习,这样会更进一步加深你的理解,另外一些小练习,也可以让你练练手~呵呵。
本文由 站酷网
- baileyange
原创,转载请保留此信息,多谢合作。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: