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,参考下面代码

1network.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();
2group.addChild(HAProxy1);
3group.addChild(HAProxy2);
4 group.expanded = true;
5group.setStyle(Styles.GROUP_SHAPE, Consts.SHAPE_OVAL);
6 group.setStyle(Styles.GROUP_FILL_ALPHA,0.5);
7elementBox.add(group);
8 
9 var group1:Group = new Group();
10group1.addChild(HAProxy3);
11group1.addChild(HAProxy4);
12 group1.expanded = true;
13group1.setStyle(Styles.GROUP_SHAPE, Consts.SHAPE_OVAL);
14 group1.setStyle(Styles.GROUP_FILL_ALPHA,0.5);
15elementBox.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);
20HAProxy5.layerID = layer.id;
21 var HAProxy6:Node = createNode("HAProxy6", "HAProxyIcon", new Point(400,280), Consts.POSITION_BOTTOMRIGHT);
22 HAProxy6.setClient('shared', true);
23HAProxy6.layerID = layer.id;
24elementBox.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中,替换原来的文件可运行。

Linux Wi-Fi P2P实战:手把手教你用wpa_supplicant搭建一个带DHCP的临时共享网络 本文详细介绍了如何使用wpa_supplicant在Linux上搭建带DHCP的Wi-Fi P2P临时共享网络。通过wpa_cli命令实现设备发现与连接,结合dnsmasq提供DHCP服务,构建完整的临时网络解决方案,适用于移动办公、团队协作等场景。 阅读详情

相关推荐

MySQL组复制(MGR)搭建与优化实战指南

数据库高可用架构是保障业务连续性的关键技术,其中基于Paxos协议的分布式一致性算法已成为现代数据库集群的核心机制。MySQL组复制(MGR)通过多节点协同工作实现自动故障转移和数据强一致性,相比传统主从复制具有明显的技术优势。在金融、电商等对数据一致性要求严格的场景中,MGR的多主写入特性和自动冲突检测功能能够有效保障业务数据的完整性。本文以MySQL 8.4.7为例,详细讲解如何配置组复制专用参数、处理网络分区等典型问题,并分享金融级部署中的性能调优经验,包括如何通过拆解大事务提升吞吐量等实用技巧。

weixin_34259232的博客 409

Twaver-HTML5基础学习(3)基本数据元素(Data)其他功能函数以及组Group

Twaver-HTML5基础学习(2)基本数据元素(Data)其他功能函数以及组Group

见贤思齐焉,见不贤内自省 834

TWaver HTML5 Developer Guide

TWaver HTML5 Developer Guide, 官方的开发指南。

TWaver局部自动布局及嵌套Group处理

TWaver提供了一些布局算法帮助我们快速为网元设置位置,很多情况下已经够用了,但是对于一些复杂的布局还需要我们自己做一些处理,看下面这个例子: 运行截图: 这个时候直接使用TNetwork#doLayout就不好使了,因为doLayout会对network中所有网元使用同一种布局算法,但是截图中Group下多个子Group各有自己的布局方式,我的解决办法是,先对最外层的Group整个布局

TWaver可视化 1984

TWaver HTML5 开发指南代码

TWaver HTML5 开发指南代码 拓扑工具 机房展示 轻松容易 很简单

AI智能体赋能Cypress:自动化前端测试的新范式

自动化测试是现代软件工程保障质量的核心实践,其原理是通过脚本模拟用户操作,对软件功能进行验证。随着大语言模型(LLM)和智能体(Agent)技术的发展,测试自动化正迈向智能化新阶段。智能体能够理解自然语言描述的测试需求,并自主规划、执行测试步骤,这为应对前端UI频繁变更、测试用例维护成本高等挑战提供了新思路。在工程实践中,将Cypress这一流行的前端测试框架封装为智能体可调用的标准化技能(Skill),是实现这一愿景的关键。通过设计清晰的交互协议和状态管理机制,智能体可以像人类测试工程师一样“感知”页面状

weixin_33726318的博客 686

Twaver-HTML5基础学习(41)列表可视化视图组件(List)

Twaver-HTML5基础学习(41)列表可视化视图组件(List)

见贤思齐焉,见不贤内自省 653

避坑指南:ZYNQ PS端读写BRAM时容易忽略的5个配置细节(基于Vivado 2022.1)

本文基于Vivado 2022.1,总结了ZYNQ PS端读写单口BRAM时5个易被忽略的关键配置细节。内容涵盖关闭Safety Circuit以优化时序、精确匹配AXI控制器与BRAM的地址深度、注意PS端函数位宽与地址对齐、正确连接时钟复位域,并提供了实用的调试技巧与诊断代码,帮助工程师规避常见陷阱,确保数据交互稳定可靠。

net55的博客 374

TWaver Group共享网元

熟悉TWaver的用户都知道Group的概念,如果是Group,那必然会出现一个网元在多组的情况,最近有客户遇到这个问题,给写了Demo,这些也跟大家分享一下如何实现,先让我们看看共享网元的效果

龙俊生的专栏 2416

【OpenClaw 故障排查完全指南】

OpenClaw 故障排查指南摘要 本指南针对OpenClaw 2026.2.26版本常见问题提供解决方案,适用于Windows/Linux/macOS平台。 核心问题及修复方案: 飞书插件连接失败:删除冲突插件或重装OpenClaw Ollama认证错误:设置环境变量OLLAMA_API_KEY="ollama-local" 配置警告:可安全忽略的安全扫描提示 端口占用:查找并终止占用18789端口的进程 插件重复加载:清理重复插件目录 快速修复: 提供一键修复PowerShell脚本

weixin_37572294的博客 1万+

【华为鸿蒙3.0/荣耀安卓12使用VMOS Pro的激活方式 方法二】

关于荣耀手机安卓12如何解除进程限制,这里提供以下教程供小伙伴们参考。

Amy_mumu的博客 13万+

树莓派3B 2.0 通用联网篇

树莓派3B 2.0 通用联网篇

qq_39261369的博客 1651

项目管理中 PMO 的关键职能解析

在企业数字化转型与战略落地的浪潮中,PMO(Project Management Office,项目管理办公室)逐渐从“项目辅助角色”升级为“组织级战略执行中枢”。然而,多数人对PMO的认知仍停留在“管项目的部门”或“文档审核机器”的层面。本文将打破误解,通过生活化类比(如“中枢神经”“导航系统”)、流程图解(战略对齐循环)、实际案例(制造企业PMO升级),深入解析PMO的五大核心职能:战略对齐、流程标准化、资源管理、绩效监控、知识沉淀。最终揭示PMO的本质——

项目管理的博客 1250

Windows 7下,中兴U880通过电脑无线网卡共享上网(共享无线上网)

  默认情况下,U880是搜不到电脑建立的无线临时共享网络的,需要修改手机的系统配置文件。下面详细说明通过电脑无线共享上网的步骤。   电脑端设置:  1.点击任务栏右下角的网络连接图标->打开网络和共享中心->设置新的连接或网络->设置无线临时共享网络(最后一个选项)  2.填写网络名:假设为U880,安全类型:无身份验证(开放式),然后点下一步,会提示U880网络...

weixin_30354675的博客 124

【总目录】AUTOSAR精进之路专栏介绍及内容目录持续更新...

本专栏系统讲解AUTOSAR汽车电子开发技术,包含Eth/OS/Can/Lin等协议栈、MCAL驱动、功能安全等核心模块。内容基于实际项目经验,从概念原理到工程配置、特殊需求实现及问题排查进行深入剖析。重点涵盖TC3xx芯片平台开发、多核OS、网络管理、存储协议栈等难点问题,提供100+篇原创技术文章。专栏采用付费模式,保证内容完整性和持续更新,并提供专业答疑服务。适合汽车电子工程师系统学习AUTOSAR开发技术。

qq_36056498的博客 6505

块存储:AIO的直接写流程注释

提交io流程中aio_write之前函数的注释,可参考“块存储:AIO的直接读流程注释”。

yiyeguzhou100的专栏 1333

树莓派3b+ 安装 raspbian stretch lite ,网络共享和其他配置

安装系统 下载 树莓派下载网址 下载最小镜像版 注意选择 Download Torrent, 使用种子换迅雷下载比较快 烧写 用 SD Card Formatter 格式化 用 Win32DiskImager 烧写 上面解压好的img镜像 注意win10会跳出来是否格式化,直接取消,后面的弹窗就有successful窗口 配置 开启SSH连接 使用powershell(windows下win...

abc666666_6的博客 4589

基于STM32设计的智能井盖(Lora组网+4G上云)_423

设计并实现了一种基于 STM32 与 Lora 通信技术的智能井盖监测系统。系统采用 STM32F103C8T6 作为核心控制器,在井盖节点端集成水位检测、有害气体检测、倾斜角度检测以及 GPS 定位等功能模块,对井盖内部环境状态和姿态变化进行实时监测。各井盖节点通过 Lora 无线通信方式组成网络,将采集的数据发送至主机(网关)进行汇聚处理。

718

phxpaxos结构图

phxpaxos结构图        通过上面的图我们可以知晓整个 phxpaxos 类分布的全貌:每一个节点的信息由 PNode 类统领,PNode类中包含若干个 Group 实例,这个数量是参数化的,多数的 Group 仅仅是为了高并发,和算法本身无关,这些 Group 实例共享一个网络模块和一个存储模块;Group 与 Instance 实例一一对应,但是 Inst

chenglinhust的专栏 2414

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

DebugSwift团队协作指南:共享调试配置与数据同步终极方案

在iOS开发团队中,高效的调试协作是提升开发效率的关键。DebugSwift作为一款全面的iOS应用调试工具包,提供了强大的团队协作功能,让开发团队能够共享调试配置、同步调试数据,确保所有成员使用统一的调试环境。本文将详细介绍如何利用DebugSwift实现团队协作,共享调试配置与数据,提升团队开发效率。 ## 🚀 为什么需要团队协作调试? 在多人协作的iOS项目中,每个开发者可能有不同的调

gitblog_00271的博客 1010

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

树莓派使用ssh远程登录

树莓派使用ssh远程登录

qq_51453480的博客 2983

Internet Group Management Protocol(互联网组管理协议)

IGMP 是Internet Group Management Protocol(互联网组管理协议)的简称。它是TCP/IP 协议族中负责IP 组播成员管理的协议,用来在IP 主机和与其直接相邻的组播路由器之间建立、维护组播组成员关系。IGMP 的版本到目前为止,IGMP 有三个版本:• IGMPv1(由RFC 1112 定义)• IGMP...

weixin_33976072的博客 500

k8s报错(couldn‘t get current server API group list: Get “http://localhost:8080/api?timeout=32s“: dial)

Kubernetes 的设计目标是提供一个平台,使得应用程序的部署、扩展和管理变得更加容易和可靠。容器是一种轻量级的、可移植的、自包含的软件运行环境,应用程序及其依赖都被打包在容器中。PV 是集群中的一块存储资源,PVC 是用户对存储资源的请求。Service 是定义一组 Pod 访问策略的抽象,它通过一个固定的 IP 地址和端口提供对 Pod 的访问。容器编排是管理和自动化容器应用的部署、扩展和操作的过程。Volume 是 Pod 中的一块存储,可以是临时的或持久的,用于数据持久化。

lwxvgdv的博客 3732

Ubuntu16.04LTS+ 虚拟机Virtualbox6.1.0 下安装win10 无法识别USB 和wifi共享

解决Ubuntu16.04LTS+ 虚拟机Virtualbox6.1.0 下安装win10 无法识别USB 和wifi共享

qq_44136347的博客 1680

图深度学习 ICLR 2022 论文全景导览:graph-based-deep-learning-literature 主题导航实战指南

本文以开源仓库 graph-based-deep-learning-literature 中的 [ICLR 2022 投稿论文主题目录](https://link.gitcode.com/i/38edb121ce63d4b37c85020a7903333e) 为核心骨架,系统梳理该届会议中图深度学习(Graph-based Deep Learning)相关论文的 40 个主题分区、约 280 篇论

gitblog_00040的博客 269
上一篇: TWaver MONO模板库新鲜出炉 精彩纷呈
下一篇: DNA分子结构3D模型
subnetwork
博客等级 码龄17年 17粉丝 84原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值