Flex中定制带图标的Tooltip

“定制”无疑是TWaver中最大的一特色,无论是node,link,attachment,就连tooltip也同样可以定制,“定制”可以显示出更强更复杂的一些功能,今天给大家带来了一个定制Tooltip的例子。
啥也不多说,先看看效果:



下面我们来细细分析一下这个功能的实现。tooltip的特点是当鼠标滑过时显示,滑出时不显示。因此我们可以定义一个tooltip组件,监听network的mouse move事件,如果鼠标下有网元,就显示tooltip组件并动态计算tooltip的位置,没有就隐藏tooltip组件。

 

this.network.addEventListener(MouseEvent.MOUSE_MOVE, function(e:MouseEvent):void
updateToolTip(e);
});

private function updateToolTip(e:MouseEvent):void {
	var element:IElement = network.getElementByMouseEvent(e, true, 5);
	if(lastElement == element){
		return;
	}
	lastElement = element;
	if(element is Link){
		var point:Point = network.getLogicalPoint(e);
		customTooltip.x = point.x - customTooltip.measuredWidth / 2;
		customTooltip.y = point.y - customTooltip.measuredHeight - 10;
		customTooltip.setText(element.getClient('message'));
		customTooltip.visible = true;
	}else{
		customTooltip.visible = false;
	}
}

 

我们来详细了解一下如何来实现tooltip组件,首先定义一个tooltip类,继承于canvas。这样就可以将tooltip直接加到network.topCanvas上。

 

public class CustomToolTip extends Canvas {}

 

tooltip组件上不需要交互动作和滚动条,因此可以将这些屏蔽:

 

public function CustomToolTip() {
	this.mouseEnabled = false;
	this.mouseChildren = false;
	this.horizontalScrollPolicy = ScrollPolicy.OFF;
	this.verticalScrollPolicy = ScrollPolicy.OFF;
	this.init();
}

 

重点是tooltip的绘制问题,我们需要将图标和文字加到tooltip组件上,并且在添加图标和文字时,需要计算一下位置

 

var messageImage:Image = new Image();
messageImage.source =  new messageIcon();
messageImage.x = _hmargin;
messageImage.y = _vmargin;
this.addChild(messageImage);

_message = new Label();
_message.x = _hmargin + _iconWidth + _hgap;
_message.y = _vmargin;
this.addChild(_message);

 

然后我们需要绘制一个如tooltip形状的图形。先来分析一个,tooltip就是一个矩形框,为了好看一点可以搞个圆角矩形,矩形下方有一个小三角的图形。接下来就可以通过画笔将这些图形绘制出来

 

//获取画笔
var g:Graphics = this.graphics;
//设置画笔的线宽为1
var lineWidth:Number = 1;
//设置画笔的样式
g.lineStyle(lineWidth, 0, 0.5, true, "normal", CapsStyle.ROUND, JointStyle.ROUND);
//设置填充色
Utils.beginFill(g, 0xFFFFFF, 1, 0, 0, _width, _height, Consts.GRADIENT_LINEAR_EAST, 0xCCCCCC, 1);
//绘制圆角矩形
g.drawRoundRect(lineWidth, lineWidth, _width - lineWidth * 2, _height - lineWidth * 2 - _arrowHeight, 10, 10);
//绘制矩形下的小三角
g.moveTo(_arrowStart, _height - lineWidth - _arrowHeight);
g.lineTo(_arrowStart, _height);
g.lineTo(_arrowStart + _arrowWidth, _height - lineWidth - _arrowHeight);
g.endFill();
//绘制小三角和矩形的连接线的颜色
g.lineStyle(1, 0xFFFFFF);
g.moveTo(_arrowStart, _height - lineWidth - _arrowHeight);
g.lineTo(_arrowStart + _arrowWidth, _height - lineWidth - _arrowHeight);

这样tooltip就定制好了,最后还需要将网元和tooltip上显示的内容绑定

 

link.setClient('message', '3333M');
customTooltip.setText(element.getClient('message'));

原文出处和原代码请参见这里。

前端相关知识 vue 阅读详情

相关推荐

使用MKL+Eigen求解稀疏矩阵方程组

问题:求解Ax=b的解,其中,A为大型稀疏矩阵,长和宽分别为1500^2。 一般思路: (1)A为对称正定矩阵,对A使用cholesky分解。 (2)A为对称不定矩阵,使用LDL‘分解,即: PAP'=LDL' 其中,L为单位下三角矩阵,D由阶数为1或者2的对角块构成,P是置换矩阵。 (3)不对称矩阵:LU分解。 (4)长方形矩阵(长...

薛晓伟 3445

emWin皮肤机制深度解析:从原理到实战定制GUI控件外观

在嵌入式GUI开发中,控件外观定制与代码维护性、资源占用之间的矛盾是常见挑战。皮肤机制作为一种设计模式,通过将控件的绘制逻辑与核心功能逻辑分离,为解决这一矛盾提供了系统化方案。其核心原理是利用回调函数接口,将视觉表现(如颜色、渐变、圆角)抽象为可独立管理和替换的“皮肤”模块。这种分离不仅提升了代码复用性和可维护性,还使得动态切换主题、统一界面风格成为可能,极大增强了嵌入式UI的视觉表现力和开发效率。本文以emWin的BUTTON和CHECKBOX控件为例,深入剖析其皮肤机制的架构设计、WIDGET_ITEM

weixin_30696427的博客 319

Tessy单元测试软件安装与破解避坑指南(附个人使用路径设置详解)

本文详细介绍了Tessy单元测试软件的安装与配置全流程,包括系统需求、服务器连接设置、环境变量配置等关键步骤,帮助开发者避开常见陷阱。特别提供了个人使用路径设置详解,确保Tessy在嵌入式开发环境中高效运行,适用于汽车电子、工业控制等领域。

weixin_33709364的博客 344

echart 图表tooltip样式自定义

效果图: 样式要求如下:主要有2个难点,1.谷歌浏览器默认显示最小字号是12px的,除非在设置里面调节调整最小字号,可以显示到6px,但是不可能让用户去修改浏览器设置,所以这边使用 transform这个属性来进行缩放,缩放会有误差,所以使用整体缩放,在用less进行运算~具体代码在下面看.2.属性名字的显示,可以和图例显示不一样不能直接使用seriesName获取,后面数据也有可能要加上单位,这...

Java小白的博客 2万+

【亲测有效】OpenClaw Gateway 出现 “(no output)“ 卡死问题完整解决指南:从手动重启到 systemd Watchdog 自动恢复

最近在使用 OpenClaw(自托管 AI 助手框架,前身 Clawdbot/Moltbot)时,遇到了一个非常常见的顽疾:TUI(终端界面)或 Telegram 等通道经常显示 "(no output)",消息发出去后机器人完全没反应,看起来像是卡死了。

hampeter的博客 8607

从零构建:如何在VSCode中为HBuilderX迁移的UniApp项目搭建TypeScript支持环境

本文详细指导如何将HBuilderX中的UniApp项目迁移至VSCode并搭建TypeScript支持环境。通过pnpm包管理器初始化项目、配置tsconfig.json和vite.config.ts文件,实现工程化迁移与TypeScript深度集成,提升开发效率和代码质量。

book8的博客 1050

TWaver Flex网元任意位置添加icon

在Flex版本中,用于也可以通过以下方式实现在网元上显示icon的功能 查看源代码打印帮助 1 server1.setStyle(Styles.ICONS_NAMES, ["att5","att6", "att7","att8"]); 2 server1.setStyle(Styles.ICONS_POSITION, Consts.POSITION_BOTTOMRIGHT_TOPRI...

hb0504511129的专栏 220

【72】【OpenCV C++ & C#】 将cv::Mat 图像转换成imgINFO 传给c#在winform上显示,OpenCV C++如何将处理后的图像传给C#呢? 如何获取图像信息呢?

本文介绍了通过OpenCV C++处理图像后传递给C#的方法。首先定义了一个结构体imgINFO存储图像信息(数据指针、宽高、通道数等),然后通过getImgInfo函数将cv::Mat转换为该结构体。文章特别指出当图像宽度不能被4整除时可能出现失真问题,并给出了两种解决方案:调整输入图像或创建新的对齐图像。此外还解释了img.step和img.cols*img.elemSize()的关系,说明它们在大多数情况下是相等的。最后提到需要通过DLL将结构体传递给C#(具体方法参见其他文章)。

程序员,他们想的是什么?他们想的永远都是技术,他们崇尚的也永远都是技术。 697

利用Echarts图表的tooltip在做一个图表

小编最近遇到一个需求,需要在折线图上在做一个图表,如下图: 这是已经做好的demo。http://gallery.echartsjs.com/editor.html?c=xry_8tQjib&v=1 先说说思路,利用折线图表的tooltip.formatter 看下面代码 tooltip: { padding: 3, backgroundColor: '#2

u010022260的博客 5173

DeepLabv3+改进68:全网首发-添加DBlock模块 |高效且鲁棒的多任务低光图像修复神经网络

本文提出了一种高效鲁棒的多任务低光图像修复神经网络DarkIR,针对夜间或昏暗条件下图像存在的噪点、光线不足和模糊问题。不同于现有方法分别处理去模糊和低光增强任务,该模型采用新的注意力机制增强CNN感受野,在降低计算成本的同时,在LOL-Blur、LOLv2和Real-LOLBlur数据集上取得最优结果,并能良好泛化到真实夜间图像。

AIcurator的博客 325

vue2/3 - H5 移动端网页中调用手机摄像头扫描二维码 / 条形码功能,在h5手机网页里调起相机摄像头进行二维码或条形码扫描效果详细教程(详细示例组件源码,一键复制开箱即用!)

vue扫描二维码条形码,vue网页调用摄像头扫二维码条形码,vue移动端如何实现调用相机扫描二维码,vue移动端扫一扫功能,vue怎么做移动端h5扫一扫功能,vue识别二维码和条形码,vue实现点击按钮调用摄像头扫码,vue调用本地摄像头实现拍照功能,Vue中如何进行二维码生成与扫描,如何实现vue在手机浏览器中调用摄像头实现扫描二维码功能,VUE项目移动端H5调用摄像头扫码,vue项目中实现H5调取摄像头,网页调用摄像头实现二维码扫描功能,vue调用手机摄像头,vue在调用摄像头扫码,vue自定义打开摄像

✅ 精选推荐文章 1万+

twaver flex编程之tooltip定制

“定制”无疑是TWaver中最大的一特色,无论是node,link,attachment,就连tooltip也同样可以定制,“定制”可以显示出更强更复杂的一些功能,今天给大家带来了一个定制Tooltip的例子。 啥也不多说,先看看效果: 下面我们来细细分析一下这个功能的实现。tooltip的特点是当鼠标滑过时显示,滑出时不显示。因此我们可以定义一个tooltip组件,监听netwo

rock的专栏 1159

5 分钟上手 Kimi Work:安装、配置、跑通第一个任务

这篇文章提供了Kimi Work的快速入门指南,帮助用户在5分钟内完成从安装到运行第一个任务的全过程。主要内容包括: 安装步骤: macOS用户下载.dmg文件并拖入Applications Windows用户下载.exe安装包,需注意中文路径问题 初始设置: 使用现有Kimi账号登录 检查任务配额和文件访问权限 首个任务推荐: 建议从简单的本地文件整理开始(如按类型分类桌面文件) 详细说明了任务执行流程和审批机制 常见问题: 计划生成卡顿的解决方法 文件无变化的排查步骤 进阶建议: 提供难度递增的后续任务

sg_knight的专栏 2773

如何在TWaver Flex中定制Tree的tooltip

如果您显示过Tree的ToolTip,会发现这个tooltip离鼠标太远了;而且也无法跟随鼠标一起移动;最重要的是,如果想动态更改tooltip也很麻烦。 还是自定义ToolTip灵活: 1. 设置tree.toolTipFunction,关闭默认的tooltip tree.toolTipFunction = function(element:IData):String { re...

weixin_30830327的博客 84

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

用Flex绘制带Icon的Tooltip

“定制”无疑是TWaver中最大的一特色,无论是node,link,attachment,就连tooltip也同样可以定制,“定制”可以显示出更强更复杂的一些功能,本文给大家带来了一个定制Tooltip的例子。 啥也不多说,先看看效果: 下面我们来细细分析一下这个功能的实现。tooltip的特点是当鼠标滑过时显示,滑出时不显示。因此我们可以定义一个tooltip组件,监听network的m...

weixin_30655569的博客 103

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

flex combox tooltip

1、显示提示 设置Prompt属性可以为Combobox添加一个默认提示。如果没有设置selectedIndex,默认selectedIndex=-1,就显示Prompt的内容。 Flex3如果不设置Prompt,默认选择第一项。Flex4如果不设置Prompt,那么默认是空的。 2、处理文字过长 Flex4中的Combobox文字过长时,会显示滚动条。我们讨论Flex3如何处理文字过...

依然饭特稀。。。 162

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

React Native鸿蒙跨平台实现Tooltip 组件,HarmonyOS API 24 通过 props 接收提示文本、位置和子元素,位置参数支持四个方向

py.test 中的典型解决方案要容易得多。在我们的例子中,我们使用了 py.test 框架中的 monkey-patching 实用程序,但。在上面的代码中,我们使用了一个新的 pytest.yield_fixture()装饰器。Python 中有很多模拟库,但最常见的是 unittest.mock,标准库中也提供了该库。例中,我们手动执行了一切,并提供了一个自定义的 patch_smtplib()固件函数,具有。创建之初,它是一个第三方包,并不是 Python 分发版的一部分,但很快就作为临时包加入。

2401_86113894的博客 758

React Native鸿蒙HarmonyOS ArkTS API 24 实现Tooltip 组件,通过 props 接收提示文本、位置参数支持 top、bottom、left、right四个方向

这个 Tooltip 提示组件采用了高度模块化的设计架构,通过清晰的职责分离实现了代码的复用性和可维护性。核心组件Tooltip作为独立的可复用单元,负责提示信息的显示、隐藏和定位,而作为主容器,负责展示不同场景下的 Tooltip 使用方式。

2401_86113894的博客 402

Vuetify2.x学习笔记(叁):栅格系统(grid)、标签(chips)、提示语(tooltip)、卡片(cards)、头像(avatar)

▲栅格系统 Vuetify附带了一个使用flex-box构建的12点栅格系统 相当于将页面宽度平均分成了12等分 可以独立设置每个元素在页面的的宽度 在栅格系统的最外层是<v-container>标签 该标签能使里面的内容居中水平填充在页面上展示 在<v-container>标签上添加fluid 可使其有更小的左右边距 用<v-row>标签包裹每一行的内容...

"✧treasure mountain✧" 6839

ArcGIS Flex 自定义DrawTip

      使用过Flex API的人都知道里面有个DrawTool工具,可以画点、线、面,非常的方便。于是就有人提问过这样的问题:DrawTool有个默认的drawtip提示,比如Click to start adding points,Double-click to finish等等,如何修改这些默认的ToolTip?       FlexViewer或Flex API在之前版本有个ES...

AJG__致力GIS解决方案,分享经验 186

实战指南:基于ATree构建可动态配置操作菜单的树形导航

本文详细介绍了如何基于Ant Design Vue的ATree组件,构建一个支持动态配置操作菜单的树形导航系统。通过自定义节点渲染、利用scopedSlots插槽以及根据节点类型(如分类、接口、用例)动态生成操作菜单,解决了企业级后台(如接口管理平台)中常见的交互需求,并提供了完整的代码实现与样式布局优化方案。

weixin_29000991的博客 174

Chakra UI核心原理:原子化设计系统与可编程主题实战

Chakra UI并非普通React UI库,而是将设计系统规则编译为运行时可组合属性的前端架构方案。其本质是CSS-in-JS之上的设计系统编译器,通过Token映射层(CSS Custom Properties)、响应式编译层(构建时生成媒体查询)和语义化约束层(colorScheme自动触发完整色阶)实现样式即配置。技术价值在于消除重复样式逻辑、保障无障碍合规、提升主题可维护性,并天然适配React 18并发渲染与微前端场景。典型应用场景包括中后台系统快速搭建、多端一致的主题管理、以及高性能表格与表单

adiking520110的博客 345

CSS单行文本截断:white-space、overflow、text-overflow协同原理与实战

单行文本控制是前端布局中最基础也最易被低估的CSS能力,其核心并非仅靠white-space: nowrap实现,而是white-space(空白处理)、overflow(溢出裁剪)、text-overflow(视觉反馈)及word-break/overflow-wrap(长词断行)四者构成的链式治理机制。理解这组属性的职责边界与协同顺序,能避免文本撑破容器、省略号失效、Flex中意外换行等高频线上问题。该方案广泛应用于电商商品卡、金融仪表盘、SaaS菜单栏等对UI一致性要求严苛的场景,是构建稳定、可测试、

weixin_33762130的博客 616

表单标签设计:提升用户体验与数据采集效率

表单标签是用户与系统交互的关键元素,直接影响数据采集效率和用户体验。通过合理的信息层级划分和微文案设计,可以显著降低填写错误率并提升完成速度。技术实现上,动态说明系统和多语言标签管理系统能够进一步优化交互体验。在电商、政务等行业场景中,定制化的标签设计尤为重要。结合WAI-ARIA规范和色盲用户适配方案,还能增强表单的可访问性。AI标签生成和语音表单交互等前沿技术,为表单标签设计带来了新的可能性。

weixin_30851867的博客 380
上一篇: 如何让Flex的Tree显示水平滚动条
下一篇: TWaver在电力系统中的应用
subnetwork
博客等级 码龄17年 17粉丝 84原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值