`

Group共享网元

阅读更多

熟悉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);
5         if(child is Node){
6             var ui:twaver.network.ui.ElementUI = network.getElementUI(child);
7             if(ui != null){
8                 rects.addItem(new Rectangle(ui.x, ui.y, ui.measuredWidth, ui.measuredHeight));
9             }
10         }
11     }
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);
16             if(ui != null){
17                 rects.addItem(new Rectangle(ui.x, ui.y, ui.measuredWidth, ui.measuredHeight));
18             }
19         }
20     });
21     return rects;
22 };

然后看看实现效果


上下点击,貌似实现了,看来我们的思路是正确的,刚进入页面共享的网元是现实的,但选中Group后,共享网元被覆盖了,TWaver老用户知道了,我们该用Layer了,还有一个问题截图中我们看到上面的Group总是覆盖下面的Group,那如何解呢?好解,我们设置Group的透明度吧,见下面代码

1 var group:Group = new Group();
2 group.addChild(HAProxy1);
3 group.addChild(HAProxy2);
4 group.expanded = true;
5 group.setStyle(Styles.GROUP_SHAPE, Consts.SHAPE_OVAL);
6 group.setStyle(Styles.GROUP_FILL_ALPHA,0.5);
7 elementBox.add(group);
8  
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);
16  
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();
4     }
5 });

这下完成了,各位看官可以下载附近中Demo,拖拖拽拽试试效果,附件下载后放在TWaver Demo中,替换原来的文件可运行。

分享到:
评论

相关推荐

    MySQL Group Replication 详细搭建部署过程

    在 MySQL Group Replication 中,每个节点都保存了完整的数据副本,这也是一个无共享的复制方案。这种复制方案,在某种程度上,和数据库状态机(DBSM)的 Replication 方法比较类似。 在安装 MySQL Group ...

    HDF_Group.zip库

    总之,HDF_Group库为VS2015环境下的HDF5数据处理提供了一个强大的工具,它简化了数据存储和访问的过程,促进了数据的共享和分析。通过深入学习和实践,开发者可以充分发挥HDF_Group库的潜力,解决各种复杂的数据管理...

    xp局域网共享[批处理]

    这可以通过更复杂的批处理脚本或者结合其他工具(如Group Policy)来实现。 总结起来,"XP局域网共享[批处理]"是一个关于如何通过批处理脚本来简化Windows XP局域网共享设置和管理的主题。通过这种方式,我们可以...

    Windows Server 2008 Group Policy Preferences

    3. **Mapped Drives**:IT管理员可以为用户配置网络驱动器映射,方便访问共享资源。 4. **Scheduled Tasks**:可以部署计划任务,以自动化系统维护或执行特定脚本。 5. **Start Menu and Taskbar Settings**:自定义...

    GroupMap:一个地图和消息共享 Android 应用程序

    《GroupMap:构建地图与消息共享的Android应用详解》 在移动互联网时代,地图和消息共享功能已经成为众多应用程序的核心组成部分。对于Android平台来说,开发者们经常需要构建这样的应用以满足用户的需求。本篇文章...

    VMware 虚拟机 Ubuntu16.04 共享固定 IP,.samba 文件夹

    force group = nogroup public = yes available = yes writable = yes ``` 其中`/home/mtv`是共享文件夹的实际路径,`force user = root`指定了客户端创建的文件所属用户为root,以解决文件权限问题。 2. **...

    实现window同linux的nfs共享目录服务

    ### 实现Windows与Linux的NFS共享目录服务详解 #### 引言 在跨平台的开发环境中,实现Windows与Linux之间的文件共享是一项常见的需求。NFS(Network File System)作为一款成熟的网络文件系统协议,提供了在异构...

    OSCAM共享器设置教程

    - `group`:可能指的是共享组,数值1可能表示默认组。 - `cccversion`:这是CCCAM协议的版本,这里是2.2.1。 - `audisabled`:值为1,意味着音频输出可能被禁用。 在实际操作中,确保所有的网络连接安全,并遵循...

    O-RAN Alliance Working Group 4 Management Plane Specification

    3GPP MV PnP Support 是 O-RAN 联盟第四工作组(WG4)管理平面规范中的一项新功能,用于支持 3GPP 的移动虚拟专用网(MV)plug-and-play(PnP)功能,以提高网络性能和可靠性。 知识点13:QSFP QSFP 是 O-RAN 联盟...

    windows 2003 配置nfs共享文件步骤

    Windows 2003 配置 NFS 共享文件步骤 本文将详细介绍在 Windows 2003 操作系统上配置 NFS 共享文件的步骤,旨在帮助新手快速掌握这项技术。 一、建立必要的目录和文件 在配置 NFS 共享文件之前,需要建立两个目录...

    PLOYCOM GROUP 系列用户手册

    - **内容连接**:描述了RealPresence Group系统如何支持内容共享功能。 - **支持的分辨率和刷新率**:列出了系统支持的不同内容分辨率和刷新率。 - **Polycom People+Content IP**:介绍了如何使用此功能进行高效...

    多域之间资源共享访问(AGDLP策略)

    多域之间资源共享访问(AGDLP策略) 多域之间资源共享访问是指在不同的域之间实现资源共享访问,AGDLP 策略是实现这种共享访问的常见方法。AGDLP 策略是指Account(帐户)、Global Group(全局组)、Domain Local Group...

    各个系统之间的文件共享

    force group = nogroup available = yes browseable = yes ``` 同时,确保全局配置中的`workgroup`设置与你的网络环境相匹配,例如改为`WORKGROUP`,并且设置字符编码避免中文乱码问题: ```ini workgroup = ...

    动易PowerEasy SiteGroup 站群系统

    5. **搜索引擎优化(SEO)**:考虑到网站的在线可见性,动易PowerEasy SiteGroup 集成了SEO工具,如关键词设置、元标签管理等,帮助提升各个子站点在搜索引擎中的排名。 6. **数据分析与报告**:系统内置了数据分析...

    group_message_sender.rar_Group通讯软件

    《Group通讯软件:构建高效团队沟通的基石》 在当今数字化时代,高效的团队沟通是企业成功的关键要素之一。Group通讯软件作为专为群聊设计的工具,正日益成为团队协作的重要平台。虽然目前该软件的功能相对简单,仅...

    网络游戏-WDM光网络中基于共享风险链路组的网络保护方法.zip

    为了解决这个问题,共享风险链路组(Shared Risk Link Group, SRLG)的概念被引入到网络保护策略中。 SRLG是网络设计中的一个重要概念,它是指一组可能同时失效的网络资源。例如,同一光缆段、同一路由器接口或者...

    电联共享NSA组网联通承建站点测试.docx

    这种合作模式下,两家运营商在各自负责的区域内构建5G网络,核心网独立,但5G频率资源实现共享。 NSA(非独立组网)是5G初期普遍采用的组网方式,电联共享选择的是option3x架构。在这种模式下,UE(用户设备)首先...

    AIX与windows下为文件共享(以NFS方式进行挂载

    - 在“configuration”中选择“使用密码和组文件”选项,并输入AIX的`/etc/passwd`和`/etc/group`文件路径。 - **启动必要的服务**: - 通过Windows服务管理器启动“Server for NFS”和“Username Mapping”两个...

Global site tag (gtag.js) - Google Analytics