Create a New ProjectFollow the step, File -> New -> Flex Project to create a new project:HelloTWaver3D. Put TWaver.swc and TWaver3D.swc file in libs directory. Flex Builder4.5 will add all *.swc files under libs directory to compile class library automatically. Add TWaver.swc to build pathAdd TWaver.swc and TWaver3D.swc to build path as below, and users can add other library files or use other Flex SDK versions.
Setup Flex SDK and Debug Flash Player References: http://www.adobe.com/products/flex/ http://www.adobe.com/support/flashplayer/downloads.html Create first applicationRoomView.mxml <?xml version="1.0" encoding="utf-8"?> <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx" width="100%" height="100%" xmlns:demo="demo.*" > <demo:RoomView width="100%" height="100%"> </demo:RoomView> </s:Application> RoomView.as package demo { import flash.events.MouseEvent; import flash.geom.Point; import flash.geom.Vector3D; import mx.controls.Alert; import spark.components.Group; import twaver.*; import twaver.threed.*; import twaver.threed.event.Mouse3DEvent; import twaver.threed.network.Network3D; import twaver.threed.util.Consts3D; import twaver.threed.util.Style3D; import twaver.threed.util.Util3D; public class RoomView extends Group { private var box:ElementBox=new ElementBox(); private var network3d:Network3D; public function RoomView() { super(); Images.init(); Util3D.registVector3D(); } override protected function createChildren():void { super.createChildren(); network3d=new Network3D(box); initData(); initAlarm(); network3d.showAxises(); network3d.applyHoverCamera(-180, 5, 8, 1600); network3d.tiltAngleLowLimit=-80; network3d.tiltAngleUpLimit=80 network3d.percentWidth=100; network3d.percentHeight=100; this.addElement(network3d); DemoUtil.initNetwork3DContextMenu(network3d); } private function initData():void { initRoom(); initRack(); } private function initAlarm():void { var e:IElement=box.getElementByID("0:1"); var alarm:Alarm=new Alarm(null, e.id, AlarmSeverity.CRITICAL); box.alarmBox.add(alarm); e=box.getElementByID("2:2"); alarm=new Alarm(null, e.id, AlarmSeverity.MAJOR); box.alarmBox.add(alarm); e=box.getElementByID("1:0"); e.setStyle(Style3D.MATERIAL_COLOR,0x00ff00); } private function initRack():void { var xgap:Number=size / 4; var ygap:Number=size / 4; var startX:Number=-xgap; var starty:Number=-ygap; for (var i:int=0; i < 3; i++) { for (var j:int=0; j < 3; j++) { box.add(createRack(i + ":" + j, startX + i * xgap, starty + j * xgap)); } } } /** * * @param x centerX * @param z centerZ */ private function createRack(id:String, x:Number, z:Number):IElement { var element:IElement=new Element(id); element.setStyle(Style3D.MAPPINGTYPE, Consts3D.MAPPINGTYPE_MAP6); element.setStyle(Style3D.MAPPING_COMMON_PATH, "rackDImage1"); element.setStyle(Style3D.PROPERTY_SIZE, new Vector3D(80, 150, 80)); element.setStyle(Style3D.PROPERTY_SPACE_LOCATION, new Vector3D(x, 150 / 2 + 10, z)); return element; } private function initRoom():void { buildWalls(); buildFloor(); } private var size:Number=800; private function buildWalls():void { box.add(createWall(0, size / 2, size, 0)); box.add(createWall(0, -size / 2, size, 0)); box.add(createWall(-size / 2, 0, size, 90)); box.add(createWall(size / 2, 0, size, 90)); } private function buildFloor():void { var element:IElement=new Element(); element.setStyle(Style3D.MAPPINGTYPE, Consts3D.MAPPINGTYPE_COMMON); element.setStyle(Style3D.THREED_SHAPE_TYPE, Consts3D.THREED_SHAPE_TYPE_PLANE); element.setStyle(Style3D.BOTH_SIDES_VISIBLE, true); element.setStyle(Style3D.PROPERTY_SMOOTH_LEVEL, Consts3D.SMOOTH_LEVEL_GREAT); element.setStyle(Style3D.WITH_TILED_MATERIAL, true); element.setStyle(Style3D.PLANE_MATERIAL, "floor"); element.setStyle(Style3D.PROPERTY_SPACE_LOCATION, new Vector3D(0, 0, 0)); element.setStyle(Style3D.PROPERTY_SIZE, new Vector3D(size + 10, 0, size + 10)); box.add(element); } /** * ____________ * | z | * | | * | . x| * | (0,0) | * | | * ------------ **/ private function createWall(x:Number, z:Number, width:Number, angle:Number=0):IElement { var wall:IElement=new Element(); wall.setStyle(Style3D.MATERIAL_COLOR, 0XCCCCCC); wall.setStyle(Style3D.THREED_SHAPE_TYPE, Consts3D.THREED_SHAPE_TYPE_ROUNDEDCUBE); wall.setStyle(Style3D.MAPPINGTYPE, Consts3D.MAPPINGTYPE_COLOR); wall.setStyle(Style3D.MATERIAL_ALPHA, 0.8); wall.setStyle(Style3D.SELECTED_EFFECT_COLOR, 0x00ff00); wall.setStyle(Style3D.ZORDERING_PUSHBACK, true); wall.setStyle(Style3D.PROPERTY_SIZE, new Vector3D(width, 200, 20)); wall.setStyle(Style3D.PROPERTY_SPACE_LOCATION, new Vector3D(x, 200 / 2, z)); wall.setStyle(Style3D.PROPERTY_ROT_ANGLE, new Vector3D(0, angle, 0)); return wall; } } } Displays below: |


