第一个DEMO

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/

或者给我留言。

你可能感兴趣的:(Blog,Flash)