熟悉TWaver的用户都知道Group的概念,如果是Group,那必然会出现一个网元在多组的情况,最近有客户遇到这个问题,给写了Demo,这些也跟大家分享一下如何实现,先让我们看看共享网元的效果。
熟悉TWaver的用户知道添加到Group中的网元,这些网元的父亲都是这个Group,既然称之为父亲,那当然一个网元只能有一个父亲,那么实现Group共享网元的效果就不能用Parent的属性来实现了。我们来分析一下在TWaver里体现一个网元属于某个Group,就是这个网元画在Group内,而Group的范围是由它的children的位置决定的,上面说了实现Group共享网元的效果是不能通过父子关系来实现的,那么我们就要从计算Group范围的地方入手,只要让Group不仅仅考虑它children的位置,也考虑需要共享的网元位置,就可以了,那么这个思路是否可行,让我们试试。
在TWaver中network在获取Group范围的方法是调用groupChildrenRectsFunction方法,这个方法默认只计算Group的children,那么根据上面的分析我们就重写这个方法,也添加上需要共享的网元。DataBox中网元很多,那么哪些网元需要共享呢,我们就给需要共享的网元添加一个自定义属性shared,如果需要共享值为TRUE,参考下面代码
1 |
network.groupChildrenRectsFunction = function(group:Group, network:twaver.network.Network):ICollection { |
2 |
var rects:ICollection = new Collection();
|
3 |
for (var i: int = 0 ; i < group.childrenCount; i++){
|
4 |
var child:IElement = group.children.getItemAt(i);
|
6 |
var ui:twaver.network.ui.ElementUI = network.getElementUI(child);
|
8 |
rects.addItem( new Rectangle(ui.x, ui.y, ui.measuredWidth, ui.measuredHeight));
|
12 |
var box:ElementBox = network.elementBox;
|
13 |
box.forEach(function(e:Element){
|
14 |
if (e.getClient( 'shared' )){
|
15 |
var ui:twaver.network.ui.ElementUI = network.getElementUI(e);
|
17 |
rects.addItem( new Rectangle(ui.x, ui.y, ui.measuredWidth, ui.measuredHeight));
|
然后看看实现效果
上下点击,貌似实现了,看来我们的思路是正确的,刚进入页面共享的网元是现实的,但选中Group后,共享网元被覆盖了,TWaver老用户知道了,我们该用Layer了,还有一个问题截图中我们看到上面的Group总是覆盖下面的Group,那如何解呢?好解,我们设置Group的透明度吧,见下面代码
1 |
var group:Group = new Group();
|
2 |
group.addChild(HAProxy1); |
3 |
group.addChild(HAProxy2); |
5 |
group.setStyle(Styles.GROUP_SHAPE, Consts.SHAPE_OVAL); |
6 |
group.setStyle(Styles.GROUP_FILL_ALPHA, 0.5 );
|
9 |
var group1:Group = new Group();
|
10 |
group1.addChild(HAProxy3); |
11 |
group1.addChild(HAProxy4); |
12 |
group1.expanded = true ;
|
13 |
group1.setStyle(Styles.GROUP_SHAPE, Consts.SHAPE_OVAL); |
14 |
group1.setStyle(Styles.GROUP_FILL_ALPHA, 0.5 );
|
15 |
elementBox.add(group1); |
17 |
var layer:Layer = new Layer( 100 );
|
18 |
var HAProxy5:Node = createNode( "HAProxy5" , "HAProxyIcon" , new Point( 180 , 280 ), Consts.POSITION_BOTTOMLEFT);
|
19 |
HAProxy5.setClient( 'shared' , true );
|
20 |
HAProxy5.layerID = layer.id; |
21 |
var HAProxy6:Node = createNode( "HAProxy6" , "HAProxyIcon" , new Point( 400 , 280 ), Consts.POSITION_BOTTOMRIGHT);
|
22 |
HAProxy6.setClient( 'shared' , true );
|
23 |
HAProxy6.layerID = layer.id; |
24 |
elementBox.layerBox.add(layer); |
再看看效果:
暮然回首,效果实现了,但是不要高兴太早,如果移动网元,你会发现移动Group的孩子Group的大小会随之改变,但是移动共享的网元,只有选择了Group后,Group才回改变,如果你有需求的话,那就要添加上监听当网元的location变化后重绘network,参考代码
1 |
elementBox.addDataPropertyChangeListener(function(e:PropertyChangeEvent): void {
|
2 |
if (e.property == "location" ){
|
3 |
network.invalidateElementUIs();
|
这下完成了,各位看官可以下载附近中Demo,拖拖拽拽试试效果,附件下载后放在TWaver Demo中,替换原来的文件可运行。
分享到:
相关推荐
在 MySQL Group Replication 中,每个节点都保存了完整的数据副本,这也是一个无共享的复制方案。这种复制方案,在某种程度上,和数据库状态机(DBSM)的 Replication 方法比较类似。 在安装 MySQL Group ...
总之,HDF_Group库为VS2015环境下的HDF5数据处理提供了一个强大的工具,它简化了数据存储和访问的过程,促进了数据的共享和分析。通过深入学习和实践,开发者可以充分发挥HDF_Group库的潜力,解决各种复杂的数据管理...
这可以通过更复杂的批处理脚本或者结合其他工具(如Group Policy)来实现。 总结起来,"XP局域网共享[批处理]"是一个关于如何通过批处理脚本来简化Windows XP局域网共享设置和管理的主题。通过这种方式,我们可以...
3. **Mapped Drives**:IT管理员可以为用户配置网络驱动器映射,方便访问共享资源。 4. **Scheduled Tasks**:可以部署计划任务,以自动化系统维护或执行特定脚本。 5. **Start Menu and Taskbar Settings**:自定义...
《GroupMap:构建地图与消息共享的Android应用详解》 在移动互联网时代,地图和消息共享功能已经成为众多应用程序的核心组成部分。对于Android平台来说,开发者们经常需要构建这样的应用以满足用户的需求。本篇文章...
force group = nogroup public = yes available = yes writable = yes ``` 其中`/home/mtv`是共享文件夹的实际路径,`force user = root`指定了客户端创建的文件所属用户为root,以解决文件权限问题。 2. **...
### 实现Windows与Linux的NFS共享目录服务详解 #### 引言 在跨平台的开发环境中,实现Windows与Linux之间的文件共享是一项常见的需求。NFS(Network File System)作为一款成熟的网络文件系统协议,提供了在异构...
- `group`:可能指的是共享组,数值1可能表示默认组。 - `cccversion`:这是CCCAM协议的版本,这里是2.2.1。 - `audisabled`:值为1,意味着音频输出可能被禁用。 在实际操作中,确保所有的网络连接安全,并遵循...
3GPP MV PnP Support 是 O-RAN 联盟第四工作组(WG4)管理平面规范中的一项新功能,用于支持 3GPP 的移动虚拟专用网(MV)plug-and-play(PnP)功能,以提高网络性能和可靠性。 知识点13:QSFP QSFP 是 O-RAN 联盟...
Windows 2003 配置 NFS 共享文件步骤 本文将详细介绍在 Windows 2003 操作系统上配置 NFS 共享文件的步骤,旨在帮助新手快速掌握这项技术。 一、建立必要的目录和文件 在配置 NFS 共享文件之前,需要建立两个目录...
- **内容连接**:描述了RealPresence Group系统如何支持内容共享功能。 - **支持的分辨率和刷新率**:列出了系统支持的不同内容分辨率和刷新率。 - **Polycom People+Content IP**:介绍了如何使用此功能进行高效...
多域之间资源共享访问(AGDLP策略) 多域之间资源共享访问是指在不同的域之间实现资源共享访问,AGDLP 策略是实现这种共享访问的常见方法。AGDLP 策略是指Account(帐户)、Global Group(全局组)、Domain Local Group...
force group = nogroup available = yes browseable = yes ``` 同时,确保全局配置中的`workgroup`设置与你的网络环境相匹配,例如改为`WORKGROUP`,并且设置字符编码避免中文乱码问题: ```ini workgroup = ...
5. **搜索引擎优化(SEO)**:考虑到网站的在线可见性,动易PowerEasy SiteGroup 集成了SEO工具,如关键词设置、元标签管理等,帮助提升各个子站点在搜索引擎中的排名。 6. **数据分析与报告**:系统内置了数据分析...
《Group通讯软件:构建高效团队沟通的基石》 在当今数字化时代,高效的团队沟通是企业成功的关键要素之一。Group通讯软件作为专为群聊设计的工具,正日益成为团队协作的重要平台。虽然目前该软件的功能相对简单,仅...
为了解决这个问题,共享风险链路组(Shared Risk Link Group, SRLG)的概念被引入到网络保护策略中。 SRLG是网络设计中的一个重要概念,它是指一组可能同时失效的网络资源。例如,同一光缆段、同一路由器接口或者...
这种合作模式下,两家运营商在各自负责的区域内构建5G网络,核心网独立,但5G频率资源实现共享。 NSA(非独立组网)是5G初期普遍采用的组网方式,电联共享选择的是option3x架构。在这种模式下,UE(用户设备)首先...
- 在“configuration”中选择“使用密码和组文件”选项,并输入AIX的`/etc/passwd`和`/etc/group`文件路径。 - **启动必要的服务**: - 通过Windows服务管理器启动“Server for NFS”和“Username Mapping”两个...