- 浏览: 166172 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
qq_21380041:
954414957@qq.com
HTML5数据可视化第二弹:打造最美3D机房 -
qq_21380041:
楼主,求代码
HTML5数据可视化第二弹:打造最美3D机房 -
luoaz:
楼主能不能传个源码的附件上来, 分享学习下呢?
HTML5+WebGL 3D机房开发实例 -
xiaosi1278:
你好能不能把你讲的源代码发一下!!做参考403541110@q ...
TWaver 3D 编辑器的使用(一)----设计3D场景以及数据绑定 -
TWaverGeek:
BigBird2012 写道您好,您能把您使用TWaver导入 ...
TWaver导入导出AutoCAD DXF图纸
TWaver最大的优点之一是“灵活的定制功能”。光说不练不行,来个例子演练一下:定制Tree节点的标签。
- 默认Tree和Network上的标签显示的是网元的name属性,设置Styles.TREE_LABEL属性后,可以让Tree显示Styles.TREE_LABEL的值,以达到Tree和Network显示不同标签的目的
- 如果觉得这样还不够,可以设置Tree#labelFunction,比如下面的代码可以让Node显示name,Link显示Styles.TREE_LABEL:
tree.labelFunction = function(e:IElement):String{ if(e is Link){ return e.getStyle(Styles.TREE_LABEL); }else{ return e.name; } }
既然TWaver这么灵活,那Tree的展开合并图标能定制么?
先来看看用最原始的方式:
1. 先定义2个class:
[Embed(source="assets/plus.png")] [Bindable] public var plus:Class; [Embed(source="assets/minus.png")] [Bindable] public var minus:Class;
2. 再设置Tree的disclosureOpenIcon和disclosureClosedIcon属性为上面定义的class
<tw:Tree id="tree2" width="100%" height="100%" disclosureOpenIcon="{minus}" disclosureClosedIcon="{plus}"/>
效果如下:
有同学就要问了,这样还是不够灵活,资源文件直接嵌入了SWF中,如果想换个图标,还得重新编译打包上传。这好说,可以用css定制组件样式(其实css也要编译成swf,这点adobe完全没有考虑到用户的实际需求,换个颜色还得编译swf,以后有时间给大家说说如何不编译swf也能用css定制样式),但是偏偏disclosureOpenIcon和disclosureClosedIcon无法用css定制样式。从mx.controls.Tree的源代码中可以看到
[Style(name="disclosureOpenIcon", type="Class", format="EmbeddedFile", inherit="no")] [Style(name="disclosureClosedIcon", type="Class", format="EmbeddedFile", inherit="no")]
这说明,disclosureOpenIcon和disclosureClosedIcon的style类型为class,css可以加载class?肯定不行,不信邪的同学可以试试:
<mx:Style> Tree { disclosureOpenIcon: "assets/minus.png"; disclosureClosedIcon: "assets/plus.png"; } </mx:Style>
运行程序会得到下面的错误:
at mx.controls::Tree/initListData()[C:\autobuild\3.5.0\frameworks\projects\framework\src\mx\controls\Tree.as:2663]
那我们就定义两个class,但是这两个class是什么class?我们来分析一下:
1. 既然是图片,我们就继承Image组件吧。
2. 既然是class,说明mx内部会不停地new这个class,所以图片资源要缓存起来。
3. 加载图片是异步的,所以要等图片加载完成后,再注册这个class。
因此就有了这2个类的定义:
package { import flash.display.Bitmap; import flash.display.Loader; import mx.controls.Image; public class disclosureOpenIcon extends Image { public static const loader:Loader = new Loader(); public function disclosureOpenIcon() { this.source = new Bitmap(Bitmap(loader.content).bitmapData); this.width = loader.content.width; this.height = loader.content.height; } } } package { import flash.display.Bitmap; import flash.display.Loader; import mx.controls.Image; public class disclosureClosedIcon extends Image { public static const loader:Loader = new Loader(); public function disclosureClosedIcon() { this.source = new Bitmap(Bitmap(loader.content).bitmapData); this.width = loader.content.width; this.height = loader.content.height; } } }
下面是定制Tree展开合并图标的代码:
private static function registTreeDisclosureIcon(tree:UIComponent):void { registClassStyle(tree, disclosureOpenIcon, "assets/minus.png"); registClassStyle(tree, disclosureClosedIcon, "assets/plus.png"); } private static function registClassStyle(component:UIComponent, clazz:Class, value:String):void { if(clazz["loader"].content == null){ clazz["loader"].contentLoaderInfo.addEventListener(Event.COMPLETE, function(e:Event):void { component.setStyle(getQualifiedClassName(clazz), clazz); }); clazz["loader"].load(new URLRequest(value), new LoaderContext(true)); } }
如果想全局注册,可以考虑下面的代码:
private static function registTreeDisclosureIcon():void { var css:CSSStyleDeclaration = StyleManager.getStyleDeclaration("Tree"); registClassStyle(css, disclosureOpenIcon, "assets/minus.png"); registClassStyle(css, disclosureClosedIcon, "assets/plus.png"); } private static function registClassStyle(css:CSSStyleDeclaration, clazz:Class, value:String):void { if(clazz["loader"].content == null){ clazz["loader"].contentLoaderInfo.addEventListener(Event.COMPLETE, function(e:Event):void { css.setStyle(getQualifiedClassName(clazz), clazz); }); clazz["loader"].load(new URLRequest(value), new LoaderContext(true)); } }
最后看看摆脱mx.controls.Tree的FastTree怎么定制展开合并图标,比如下面的代码就让展开合并图标颠倒了:
tree4.expandIcon = "collapsed_icon"; tree4.collapseIcon = "expanded_icon";
本文完整代码见附件:见原文最下方
发表评论
-
HTML5+WebGL 3D机房开发实例
2015-09-30 15:28 11635前阵子写了一篇HMTL5 3D ... -
HTML5 3D水源监控系统
2015-09-07 23:29 1392天津港爆炸事件后,除 ... -
看HTML5如何化解大型复杂网络拓扑图的分组嵌套效果
2015-06-25 14:12 3624忙完3D,最近又开始用HTML5给客户开发网管界面。这次客 ... -
HTML5数据可视化第二弹:打造最美3D机房
2015-06-01 14:25 12785最近项目开发任务告一段落,刚好有时间整理这大半年的一些成果 ... -
HTML5组织结构图之名片式网元布局
2015-05-07 11:43 2468组织结构图(Organization chart)是企业的 ... -
HTML5流程图之矢量可伸展workflow
2015-05-06 17:17 11462互联网购物成了当今非 ... -
数字图像处理技术在TWaver可视化中的应用
2015-04-16 14:30 722数字图像处理(Digital Image Processin ... -
用拓扑图呈现多层级关系图
2015-04-13 11:51 1676大部分拓扑图界面都有显示“分级呈现”的需求。一个复杂的系统或 ... -
3D赛瓦号——整装待发!
2015-02-16 10:51 685随着岁末将至,twaver开发团队依旧马不停蹄,3d产品功 ... -
在TWaver的Tree节点上画线
2015-01-13 10:27 952论坛上有同学提出如何在tree上画引导线,之前我们Flex已 ... -
如何实现TWaver 3D颜色渐变
2014-10-21 13:37 546一般而言,需要实现3D物体的渐变,通常的思路就是通过2D绘制 ... -
被忽视的TWaver功能(1)
2014-10-13 09:44 1289应客户需求写个Demo,Demo中包含一些常用的功能,包括解 ... -
TWaver GIS在电信中的使用
2014-10-09 14:56 547GIS作为信息系统的重要组成部分,在电信行业中的应用由来已久。 ... -
TWaver MONO模板库新鲜出炉 精彩纷呈
2014-08-05 11:39 932MONO Design在线3D建模平台网站, www.mon ... -
如何允许WebGL从本地载入资源
2014-05-06 10:18 889随着mono-design不断推广,用户越来越多,陆续有电 ... -
在3D场景中显示汉字
2012-08-07 12:01 0TWaver 3D for Flex本身支持3 ... -
GeoServer快速发布地图数据
2012-08-07 11:54 0TWaver GIS提供了WMS的客户 ... -
让Swing表格支持远程后台数据翻页
2012-08-06 17:04 0TWaver Java不但提供了TTable、TElement ... -
TWaver图形之道(七)TWaver开发流程
2012-08-06 16:06 0TWaver开发流程TWaver是一种前台解决方案,它的地位在 ... -
用TWaver HTML5定制五彩斑斓的链路
2012-08-07 09:35 1317最近有客户提到自定义链路的需求,个人感觉非常有代表意义,现在共 ...
相关推荐
TWaver Flex中的告警功能是该组件的一个重要组成部分,文档中讲解了告警的使用,包括告警级别、状态与统计、以及告警的呈现方式。 ### 版权声明和使用许可 文档中也明确了版权信息和版权声明,强调了文档是...
它可以驱动多个视图,如`twaver.controls.Tree`、`twaver.controls.Table`和`twaver.network.Network`。当`DataBox`中的数据发生变化时,这些变化会自动反映到与其关联的所有视图组件上,实现了数据和视图的双向绑定...
《Twaver Flex中文用户使用手册》是一份专为使用Twaver Flex产品的用户准备的详尽指南,旨在帮助用户深入理解和高效应用这款强大的图形化建模工具。Twaver Flex是一款基于Adobe Flex技术的可视化开发框架,它提供了...
可能是用于展示如何在twaver.js中处理警报或事件管理的实例。通过这个文件,我们可以学习到如何利用twaver.js来设计和实现报警系统的图形界面,包括节点的动态更新、状态显示、事件触发等。 **综合知识点:** 1. *...
通过这个"TWaver的3d图形组件库,小demo",开发者不仅可以学习到如何使用TWaver库创建3D图形,还能了解到现代Web开发中的3D数据可视化技术和最佳实践。通过研究提供的源代码,开发者可以提升自己在WebGL和JavaScript...
Tree组件章节中,开发者将学习到如何定义树节点的样式,以及如何控制树的层次结构和排序,实现复杂的树形结构。 Table组件章节讲解了表格的列设置以及数据排序方法。 Chart组件章节介绍了多种图表组件的使用方法,...
标题中的"twaver-html5-5.9.0-api_html5_-5.9.0-api_twaver_"似乎是指一个基于HTML5的Twaver版本5.9.0的应用程序接口(API)文档。Twaver是一个强大的数据可视化和网络建模工具,广泛应用于网络拓扑、流程图、组织...
- **Tree 组件**:用于展示层级结构的数据,支持折叠/展开树节点等功能。 #### 五、TWaverFlex 数据模型详解 TWaverFlex 的数据模型主要由以下几种数据元素组成: - **基本数据元素**:包括 twaver.Node 和 ...
TWaver Documents中文文档
【描述】描述中的“TWaver-java-4.1最新 官网试用版jar包及Demo”表明这是一个Java开发的工具包,主要功能在于提供数据可视化的解决方案。用户可以通过试用版的jar包进行初步体验,同时附带的Demo则能够帮助开发者更...
- **前台 Table 组件**、**前台 Tree 组件**、**前台 Sheet 组件**、**前台 AlarmTable**、**前台 AlarmOverview 组件** 等章节详细介绍了如何将 TWaver Web 的功能与 ExtJS 的各种组件集成,以实现复杂的应用场景。...
【描述】"twaver web结合extjs源码学习资料"意味着这个压缩包包含了一组实际项目的源代码,用于展示如何在Web环境中整合Twaver和ExtJS。通过学习这些源码,开发者可以深入了解这两个库如何协同工作,创建交互式和...
通过学习和研究这些代码,开发者可以快速掌握TWaver的用法,将其应用到实际项目中。 综上,TWaver HTML5开发指南代码是开发人员构建高效、互动的拓扑工具和机房展示应用的重要资源,它简化了HTML5环境下的可视化...
- 这种跨平台的支持意味着TWaver可以被集成到不同的应用场景中,无论是桌面应用、Web应用还是移动应用,都能找到合适的版本。 ### TWaver的优势 #### 高效性 - TWaver在处理大量数据时表现出了极高的效率,例如在*...
Twaver学习案例的例子
【标题】"TWaver-java-4.1" 是一个针对Java平台的TWaver最新开发包,旨在帮助开发者创建更加生动且具有吸引力的用户界面。TWaver是一个强大的数据可视化工具,它提供了丰富的图表类型和交互功能,让数据展示更加直观...
- **随机连接测试**中,随着节点数量及连接复杂度的增加,Twaver Java表现出良好的扩展性,能够有效管理大量数据和复杂逻辑关系,这为实际应用中的高并发场景提供了有力支撑。 - **特定比例连接测试**进一步验证了...