第一个DEMO

[url]http://stormer008.blog.sohu.com/95961495.html[/url]
首先,新建一个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/

或者给我留言。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值