`
nlslzf
  • 浏览: 1045283 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

第一个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/

或者给我留言。
分享到:
评论

相关推荐

    安卓第一个Demo

    【安卓第一个Demo】是针对初学者设计的一个基础项目,它主要展示了如何在Android平台上构建一个简单的用户登录界面。这个Demo是安卓移动开发的入门实践,旨在帮助新手理解Android应用程序的基本结构和开发流程。 ...

    red5第一个demo

    在学习和使用Red5时,了解并动手实现第一个DEMO是非常重要的步骤,因为它可以帮助我们快速理解和掌握Red5的基本用法。 这个"red5第一个demo"是一个简单的入门教程,主要针对初次接触Red5的开发者。从描述中我们可以...

    jQuery 第一个demo

    **jQuery第一个Demo详解** 在IT领域,jQuery是一个广泛使用的JavaScript库,它极大地简化了JavaScript的DOM操作、事件处理、动画制作以及Ajax交互。本篇将深入解析“jQuery第一个Demo”,帮助初学者快速入门jQuery...

    android第一个demo

    在Android开发领域,"android第一个demo"通常是指开发者初次接触并构建的第一个应用程序,它是学习Android编程的基础步骤。这个过程不仅涵盖了基本的环境配置,还涉及到了Android Studio的使用,以及编写简单的Hello...

    四、Qt 的第一个demo

    【标题】"四、Qt 的第一个demo" 是一个关于学习Qt框架的初步实践教程,它旨在帮助初学者理解如何在Qt环境中创建并运行一个简单的应用程序。Qt是一个强大的跨平台应用程序开发框架,广泛用于桌面、移动和嵌入式系统。...

    第一个项目Demo第一个项目Demo

    【描述】:“第一个项目Demo第一个项目Demo第一个项目Demo第一个项目Demo” 描述部分重复了标题,进一步强调了这是一个入门级别的项目,可能是为了帮助初学者理解项目开发流程,或者是用来演示某个特定技术或框架...

    韩顺平struts视频第一个Demo(简单登录验证)

    在本示例中,"韩顺平struts视频第一个Demo(简单登录验证)"是一个基于Struts框架的入门级实践,旨在教授如何实现一个基本的用户登录验证功能。韩顺平是一位知名的IT教育家,他的课程通常深入浅出,易于理解。 在这个...

    我的第一个NDK小demo

    【我的第一个NDK小demo】是一个关于Android应用开发中使用NDK和JNI技术的实践教程。NDK(Native Development Kit)是Google提供的一套工具,允许开发者在Android应用中使用C/C++原生代码,以实现性能优化或者利用...

    1-ClientDemo_海康demo_

    文件名称列表中的 "1-ClientDemo" 暗示了这是一个序列中的第一个客户端示例,可能包括了源代码、编译脚本、配置文件等,用于演示基本的设备连接和控制。开发者可以通过查看、编译和运行这个示例,了解如何设置网络...

    ArcGis 实现的地图各种Demo集锦(案例) MapWeb.rar

    本篇文章将深入探讨ArcGIS在地图开发中的应用,特别是通过MapWeb这个Demo集锦,我们将了解如何利用ArcGIS技术实现各种地图功能。 一、ArcGIS核心概念 1. GIS基础:GIS是Geographic Information System的缩写,它...

    关于自定义ContentProvider的Demo

    第二个Demo是关于如何“访问并读写第一个demo的数据库”。这通常涉及到以下步骤: 1. **获取ContentResolver**:在需要访问ContentProvider的Activity或Service中,通过`getApplicationContext()....

    drools实现demo

    在第一个demo中,很可能演示了如何创建和加载DRL文件,以及如何通过Drools API激活规则,使规则能够根据给定的事实(facts)进行匹配和执行。 2. **Drools与SpringBoot整合**:SpringBoot是Java开发微服务的流行...

    腾讯地图定位2个demo(1.一个标记点,地图可点击。2.多个标记点,标记点可以点击并显示信息)

    这个DEMO扩展了第一个DEMO的功能,实现了在地图上展示多个标记点,并且每个标记点都可以被点击,点击后会显示出相关信息。这通常涉及到对`Marker`对象的数组操作,以及对点击事件的处理。开发者可能需要使用循环结构...

    demo2_1_focuson3Dterrain_DEMO_

    【标题】"demo2_1_focuson3Dterrain_DEMO_" 指示这是一个与3D地形相关的编程演示,可能是某个教程或课程的第二章第一个示例项目。"DEMO"通常代表它是一个可运行的实例,用于展示特定技术或功能。 【描述】"3D地形...

    一个日历 Demo程序

    【标题】:“一个日历 Demo程序” 在编程领域,日历应用是常见的需求之一,它涉及到日期和时间的处理,这对于任何系统来说都是基础且重要的功能。本“日历 Demo程序”提供了一个实用的示例,帮助开发者了解如何在...

    很多个demo经典收藏

    1. **软件开发过程**:在软件开发的初期阶段,开发者通常会制作一个Demo来呈现应用的基本框架和主要功能,以便于投资者、客户或团队成员理解项目的可行性。这有助于快速验证概念,获得反馈,并可能促进进一步的开发...

    一个webrtcdemo

    1. **getUserMedia**:这个API允许访问用户的摄像头和麦克风,是实现音视频传输的第一步。 2. **RTCPeerConnection**:这是WebRTC的中心组件,负责建立和管理两端之间的实时通信连接。它处理信令、音视频流的编码、...

    启动第三方Demo

    1. **获取第三方库**:第三方库可能是一个jar包,或者更常见的是一个AAR(Android Archive)文件。开发者通常会在GitHub、JCenter、Maven Central或第三方SDK提供商的官方网站上找到这些库。 2. **添加依赖**:在...

    第六章Demo代码

    "第六章Demo代码"是针对iPhone开发入门的经典教程中的一个章节,旨在通过实践帮助初学者深入理解本章所讲授的关键概念。尽管描述中提到"这章就那么一句话的代码",但这可能是指示例的核心逻辑简洁明了,但其背后蕴含...

    第七章的Demo

    在本节中,我们将深入探讨"第七章的Demo",这是一个专为初学者设计的iPhone应用开发教程。这个Demo旨在帮助新手理解iOS开发的基础知识,特别是使用Objective-C或Swift编程语言进行开发。在这个压缩包中,包含的是第...

Global site tag (gtag.js) - Google Analytics