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】是针对初学者设计的一个基础项目,它主要展示了如何在Android平台上构建一个简单的用户登录界面。这个Demo是安卓移动开发的入门实践,旨在帮助新手理解Android应用程序的基本结构和开发流程。 ...
在学习和使用Red5时,了解并动手实现第一个DEMO是非常重要的步骤,因为它可以帮助我们快速理解和掌握Red5的基本用法。 这个"red5第一个demo"是一个简单的入门教程,主要针对初次接触Red5的开发者。从描述中我们可以...
**jQuery第一个Demo详解** 在IT领域,jQuery是一个广泛使用的JavaScript库,它极大地简化了JavaScript的DOM操作、事件处理、动画制作以及Ajax交互。本篇将深入解析“jQuery第一个Demo”,帮助初学者快速入门jQuery...
在Android开发领域,"android第一个demo"通常是指开发者初次接触并构建的第一个应用程序,它是学习Android编程的基础步骤。这个过程不仅涵盖了基本的环境配置,还涉及到了Android Studio的使用,以及编写简单的Hello...
【标题】"四、Qt 的第一个demo" 是一个关于学习Qt框架的初步实践教程,它旨在帮助初学者理解如何在Qt环境中创建并运行一个简单的应用程序。Qt是一个强大的跨平台应用程序开发框架,广泛用于桌面、移动和嵌入式系统。...
【描述】:“第一个项目Demo第一个项目Demo第一个项目Demo第一个项目Demo” 描述部分重复了标题,进一步强调了这是一个入门级别的项目,可能是为了帮助初学者理解项目开发流程,或者是用来演示某个特定技术或框架...
在本示例中,"韩顺平struts视频第一个Demo(简单登录验证)"是一个基于Struts框架的入门级实践,旨在教授如何实现一个基本的用户登录验证功能。韩顺平是一位知名的IT教育家,他的课程通常深入浅出,易于理解。 在这个...
【我的第一个NDK小demo】是一个关于Android应用开发中使用NDK和JNI技术的实践教程。NDK(Native Development Kit)是Google提供的一套工具,允许开发者在Android应用中使用C/C++原生代码,以实现性能优化或者利用...
文件名称列表中的 "1-ClientDemo" 暗示了这是一个序列中的第一个客户端示例,可能包括了源代码、编译脚本、配置文件等,用于演示基本的设备连接和控制。开发者可以通过查看、编译和运行这个示例,了解如何设置网络...
本篇文章将深入探讨ArcGIS在地图开发中的应用,特别是通过MapWeb这个Demo集锦,我们将了解如何利用ArcGIS技术实现各种地图功能。 一、ArcGIS核心概念 1. GIS基础:GIS是Geographic Information System的缩写,它...
第二个Demo是关于如何“访问并读写第一个demo的数据库”。这通常涉及到以下步骤: 1. **获取ContentResolver**:在需要访问ContentProvider的Activity或Service中,通过`getApplicationContext()....
在第一个demo中,很可能演示了如何创建和加载DRL文件,以及如何通过Drools API激活规则,使规则能够根据给定的事实(facts)进行匹配和执行。 2. **Drools与SpringBoot整合**:SpringBoot是Java开发微服务的流行...
这个DEMO扩展了第一个DEMO的功能,实现了在地图上展示多个标记点,并且每个标记点都可以被点击,点击后会显示出相关信息。这通常涉及到对`Marker`对象的数组操作,以及对点击事件的处理。开发者可能需要使用循环结构...
【标题】"demo2_1_focuson3Dterrain_DEMO_" 指示这是一个与3D地形相关的编程演示,可能是某个教程或课程的第二章第一个示例项目。"DEMO"通常代表它是一个可运行的实例,用于展示特定技术或功能。 【描述】"3D地形...
【标题】:“一个日历 Demo程序” 在编程领域,日历应用是常见的需求之一,它涉及到日期和时间的处理,这对于任何系统来说都是基础且重要的功能。本“日历 Demo程序”提供了一个实用的示例,帮助开发者了解如何在...
1. **软件开发过程**:在软件开发的初期阶段,开发者通常会制作一个Demo来呈现应用的基本框架和主要功能,以便于投资者、客户或团队成员理解项目的可行性。这有助于快速验证概念,获得反馈,并可能促进进一步的开发...
1. **getUserMedia**:这个API允许访问用户的摄像头和麦克风,是实现音视频传输的第一步。 2. **RTCPeerConnection**:这是WebRTC的中心组件,负责建立和管理两端之间的实时通信连接。它处理信令、音视频流的编码、...
1. **获取第三方库**:第三方库可能是一个jar包,或者更常见的是一个AAR(Android Archive)文件。开发者通常会在GitHub、JCenter、Maven Central或第三方SDK提供商的官方网站上找到这些库。 2. **添加依赖**:在...
"第六章Demo代码"是针对iPhone开发入门的经典教程中的一个章节,旨在通过实践帮助初学者深入理解本章所讲授的关键概念。尽管描述中提到"这章就那么一句话的代码",但这可能是指示例的核心逻辑简洁明了,但其背后蕴含...
在本节中,我们将深入探讨"第七章的Demo",这是一个专为初学者设计的iPhone应用开发教程。这个Demo旨在帮助新手理解iOS开发的基础知识,特别是使用Objective-C或Swift编程语言进行开发。在这个压缩包中,包含的是第...