http://stormer008.blog.sohu.com/95961495.html
首先,新建一个FLA文件(注意,必须是AS3的),命名为Hello.fla,将场景的背景色调成深色,因为我们将要制作的3D立方体的颜色是白的;
然后打开组件窗口与元件库窗口,然后把Alternativa3D组件包中的3个组件拖到元件库中。
接着,把文档类设置为Hello
OK,保存Hello.fla,我们现在新建一个AS文档,名字为Hello.as,既Hello.fla的文档类。
Hello.as的代码如下:
package
{
//载入alternativa3D类库
import alternativa.engine3d.controllers.CameraController;
import alternativa.engine3d.core.Camera3D;
import alternativa.engine3d.core.Object3D;
import alternativa.engine3d.core.Scene3D;
import alternativa.engine3d.display.View;
import alternativa.engine3d.materials.WireMaterial;
import alternativa.engine3d.primitives.Box;
import alternativa.utils.FPS;
//载入FLASH类库
import flash.display.Sprite;
import flash.display.StageAlign;
import flash.display.StageScaleMode;
import flash.events.Event;
//文档类
public class Hello extends Sprite
{
//声明场景
private var scene:Scene3D;
//声明视口
private var view:View;
//声明摄像机
private var camera:Camera3D;
//声明摄像机控制器
private var cameraController:CameraController;
//声明立方体
private var box:Box;
//构造函数
public function Hello()
{
init();//初始化舞台内容
}
public function init():void
{
//设置场景保持伸缩比例
stage.scaleMode = StageScaleMode.NO_SCALE;
//场景左上对齐
stage.align = StageAlign.TOP_LEFT;
//生成场景
scene = new Scene3D();
scene.root = new Object3D();
//生成一个立方体
//其参数依次为:宽、长、高、宽分段、长分段、高分段、是否显示相反面、是否显示为三角面
box = new Box(100, 100, 100, 3, 3, 3, false, false);
//上面这句可以省略写为:
//box = new Box(100, 100, 100, 3, 3, 3);
//给立方体设置材质
//WireMaterial类型材质为多角形接线,初始化的参数为线宽和颜色
box.setMaterialToAllSurfaces(new WireMaterial(1, 0xFFFFFF));
//将立方体添加到场景中
scene.root.addChild(box);
//设置摄像机的坐标并添加到场景中
camera = new Camera3D();
camera.x = 100;
camera.y = -150;
camera.z = 100;
scene.root.addChild(camera);
//将新生成的视口添加到舞台,设置其摄像机为上面建立的摄像机
view = new View();
addChild(view);
view.camera = camera;
//生成摄像机控制器
cameraController = new CameraController(stage);
//指定摄像机
cameraController.camera = camera;
//设置使用默认键控制摄像机()
cameraController.setDefaultBindings();
//镜头指向立方体的坐标
cameraController.lookAt(box.coords);
//激活摄像机控制器
cameraController.controlsEnabled = true;
//显示当前的FPS值和内存占用情况
FPS.init(stage);
//为舞台添加事件
stage.addEventListener(Event.RESIZE, onResize);
stage.addEventListener(Event.ENTER_FRAME, OnEnterFrame);
onResize(null);
}
private function onResize(e:Event):void
{
//当FLASH大小变动的时候,视口的尺寸也随之变化
view.width = stage.stageWidth;
view.height = stage.stageHeight;
}
private function OnEnterFrame(e:Event):void
{
//处理用户输入,既处理对用户对视口变化的操作
//可以在视口中拖拽鼠标移动视口方向,可以通过滚轮进行缩放
cameraController.processInput();
//场景渲染
scene.calculate();
}
}
}
每段代码我都加上了注释,可以理解吧? :) 不明白可以查官方的API:
http://help.alternativaplatform.com/en/client/
或者给我留言。