`

TWaver3D 编辑器的使用(二)—— 定制模板module

阅读更多

在TWaver3D编辑器的设计中,借助于ModuleManager实现了模块(module)的动态加载,这样用户可以自定义扩展3D模板,用于增加可编辑对象,提高编辑器能力。那么如何来扩展这些模板呢,让我来带领大家认识一下Editor的动态module应用机制。
在TWaver3D产品包中,发布出两个模板模块,分别命名为room和equipment。


这两个模块分别完成房间模型,设备模型的模板置入,Editor加载了这两个模块之后,就会出现下面的模型分组,用户可以从分组中拖拽出自己期望的模型对象到编辑场景中去,实现3D场景的可视化编辑。

但是在实际应用的时候,用户需要用更多的模型模板来做场景编辑,例如新的设备,新的房型等,这时能不能由用户进行模型模板的扩展呢?
例如客户需要向设备上添加一个信号灯对象,那么如何把这种模型模板添加到TWaver的3D编辑器中?
首先,用户需要打开IDE环境,创建一个module文件。(以FlashBuilder为例)

我们将之命名为Signal.mxml,
然后,需要在开发工程中引入必要的开发包,TWaver提供3个必要的包,分别是TWaver.swc, TWaver3D.swc和 EditorLib.swc。

这样我们就可以按照Editor的动态模块机制来进行自己的扩展了。
下面我们就来开始自己扩展一个模块,用于向Editor中注入信号灯模型。
第一要求实现EditorLib中定义的一个接口IResources。向我们生成的Signal.mxml文件头中添加implements="module.IResources"

<?xml version="1.0" encoding="utf-8"?>
<mx:Module xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:mx="library://ns.adobe.com/flex/mx" layout="absolute" implements="module.IResources">

</mx:Module>

 

IResources的定义如下:

public interface IResources{
//初始化函数。模块被加载后,自己需要执行的初始化动作
function init():void;
//模块名
function getName():String;

function getInfo():String;
//模型需要的贴图集合,以key-value的映射方式进行存储
function getImages():Object;
//模块中包含的全部的模型对象的描述
function getItems():Array;
//。
function exportClasses():Array;
}

 
然后我们来做实现代码

<?xml version="1.0" encoding="utf-8"?>
<mx:Module xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:mx="library://ns.adobe.com/flex/mx" layout="absolute" width="400" height="300" implements="module.IResources">
<fx:Declarations>
<!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>
<fx:Script>
<![CDATA[
import extentdata.SignalData;
import extentdata.XYData;

import module.ResourcesConsts;
import module.ResourcesItem;
[Embed(source="demo/images/signal.png")]
public static const SignalIcon:Class;
public function init():void
{
}
public function getName():String
{
return "信号灯资源包";
}
public function exportClasses():Array{
return [extentdata.SignalData];
}
public function getImages():Object
{
var classInfo:XML=describeType(Signal);
var imageMap:Object=new Object();
for each (var c:XML in classInfo..constant)
{
var name:String=c.@name;
imageMap[name]=Signal[name];
}
return imageMap;
}
public function getXYItems():Array
{
var array:Array=new Array();
var item:ResourcesItem=new ResourcesItem();
//用于在Editor的属性表中绑定模型对象的属性,可以无限增加
item.addModelProperty("width","直径");
item.addModelProperty("altitude","深度");
//指明信号灯对象默认的大小
item.length=15;
item.width=15;
item.height=15;
//填充的信号灯模型所属的分组名
item.category="信号灯";
//在模型模板分组中用来表示信号灯的图片
item.icon="SignalIcon";
//在模型模板分组中,信号灯对象的tooltip
item.tooltip="信号灯";
item.name = item.tooltip;
//用来表示模型对象的数据类型
item.clazz = extentdata.SignalData;
//需要通过Editor进行配置的client property,可以无限增加
item.addClientProperty("bid", "BID");
//声明模型对象在xy平面上进行操作
item.type=ResourcesConsts.TYPE_XY;
array.push(item);
return array;
}
public function getItems():Array
{
var array:Array=new Array();
array=array.concat(getXYItems());
return array;
}
]]>
</fx:Script>
</mx:Module>


然后我们就可以在IDE下编译我们写的这个新module了,打包称为Signal.swf。接着把这个swf文件放在Editor.swf的同目录下,就可以直接加载了。

加载成功之后,就会在模型模板库中看到新添加的信号灯对象。

这时我们就可以直接在编辑器中使用信号灯,向原有模型中添加了信号灯对象了。

让我们来看看添加信号等前后的不同
   

添加完信号灯,就可以将图纸保存出来。在监控系统中,加载这个图纸,通过程序可以找到信号灯对象,然后根据采集到的数据,动态修改信号灯的颜色,就可以实现实时显示监控信息了。
注:本文中用到的相关扩展文件可以在TWaver 3D产品下载包中获取,另外例子的完整代码可以从这里下载。

 

见原文最下方

分享到:
评论

相关推荐

    TWaver的3d图形组件库,小demo

    3. **JavaScript编程**:TWaver库是用JavaScript编写,这意味着开发者需要熟悉JavaScript语法和面向对象编程,以创建和定制3D图形组件。 4. **3D图形组件**:TWaver提供的3D图形组件包括但不限于3D图表(如3D柱状图...

    twaver 3D机房接口文档

    ### 3D机房系统接口文档关键知识点 ...通过以上介绍可以看出,《twaver 3D机房接口文档》详细描述了3D机房系统的关键功能模块及其接口设计,旨在帮助开发者更好地理解并利用这些接口来实现机房管理自动化和智能化。

    基于TWaver实现的3D机房Demo

    通过阅读和分析这些代码,开发者可以学习到TWaver的基本使用方法和3D机房的构建流程。 总结来说,TWaver为3D机房管理提供了强大的解决方案,通过其高级的API和对Three.js的封装,使得开发人员能够快速创建出具有...

    TWaver 3D Flex 3D 实例 例子

    标题中的“TWaver 3D Flex 3D 实例 例子”表明这是一份关于TWaver 3D技术在Flex 3D环境下的应用实例。TWaver是一款强大的数据可视化工具,它提供了丰富的图表类型和交互功能,而Flex 3D是Adobe Flex框架的一个扩展,...

    twaver.js使用示例

    “twaver.js使用示例”这一标题表明了我们即将探讨的是一个关于twaver.js的实践应用案例。Twaver.js是一款强大的图形化建模和可视化库,主要用于创建复杂的网络拓扑图、流程图、组织结构图等。这个标题暗示我们将...

    twaverflex 3D开发文档

    文档开头提到了“TWaver3D for Flex Developer Guide Version 3.0”,这意味着文档是TWaver3D版本3.0的开发者指南,用于指导开发者如何使用TWaver3D进行Flex应用开发。TWaver3D是一个专门针对Adobe Flex开发环境的3D...

    twaver flex 中文用户使用手册

    《Twaver Flex中文用户使用手册》是一份专为使用Twaver Flex产品的用户准备的详尽指南,旨在帮助用户深入理解和高效应用这款强大的图形化建模工具。Twaver Flex是一款基于Adobe Flex技术的可视化开发框架,它提供了...

    10个TWaver网页3D可视化精彩案例.docx

    ### TWaver网页3D可视化精彩案例解析 #### 一、化学元素周期表 **知识点概述:** TWaver在化学元素周期表的3D可视化中采用了六种不同的排列方式,不仅展示了化学元素的基本信息,还通过炫酷的动画效果提升了用户...

    TWaver 源代码下载 案例

    TWaver 源代码下载 3D 机房代码下载 TWaver 编辑器下载

    twaver 教程

    1. **图形和图元**:了解Twaver提供的各种图形和图元,包括节点、边、连接器、形状、标签等,以及如何自定义它们的外观和行为。 2. **网络拓扑**:学习如何创建和编辑网络拓扑图,包括自动布局、手动拖放、缩放和平...

    twaver-java-4.1

    3. `License.txt`:这是授权协议文件,详细列出了使用TWaver开发包的条款和限制,包括商业使用、开源项目使用等方面的规定,开发者在使用前必须仔细阅读。 4. `README.txt`:此文件通常包含了关于如何安装、配置和...

    twaver-html5-5.9.0-api_html5_-5.9.0-api_twaver_

    4. **elements**:这个目录可能包含与图形元素相关的文件,比如图形模板、样式定义等。 5. **assets**:通常存储图片、CSS、字体等静态资源,这些资源可能在展示示例或教程时用到。 6. **classes**:可能包含了...

    Twaver Web SVG 开发说明文档

    对于在 Internet Explorer 浏览器中使用的情况,可能需要对弹出菜单进行定制,以适应不同的需求。 #### 总结 Twaver Web SVG 是一款强大的网络管理工具,它利用 SVG 技术实现了对电信网络的可视化管理。通过对该...

    twaver-java-3.7

    1. **丰富的图表类型**:Twaver提供多种图表模板,包括树图、网状图、矩阵图、甘特图等,适应不同场景的数据展示需求。 2. **交互性**:用户可以通过点击、拖拽、缩放等方式与图表进行交互,图表元素可以动态响应...

    TWaver Java 3.7 Developer Guide

    - **数据选择处理**:可以定制数据选择行为,例如,使用选择容器`SelectionModel`或选择监听器。 - **预定义对象**:TWaver提供了多种预定义对象,如节点、连接、节点组等,可以进行深度定制。 - **通用特性**:支持...

    TWaver HTML5 开发指南代码

    在`TwaverWeb`目录中,可能包含了多个示例代码,这些示例展示了如何使用TWaver创建各种拓扑图和机房展示。通过学习和研究这些代码,开发者可以快速掌握TWaver的用法,将其应用到实际项目中。 综上,TWaver HTML5...

    TWaver-java-4.1最新 官网试用版jar包及Demo

    【标题】"TWaver-java-4.1最新 官网试用版jar包及Demo" 涉及的核心知识点是TWaver,一个基于Java的图形可视化库,主要用于数据的图表展示和交互。这个版本是4.1,是官方提供的试用版,包含jar包和演示示例。 【描述...

    twaver java 4.5.0

    开发者可以通过在自己的项目中引入这个JAR文件,利用TWaver提供的API来创建和定制各种复杂的图表和图形,如折线图、柱状图、饼图、网络图、地图等。这使得非图形界面专家也能轻松实现数据的可视化表达。 【标签】...

Global site tag (gtag.js) - Google Analytics