提示气泡(RichTooltip)
基本信息
| 属性 | 值 |
|---|---|
| 类 | com.cleanroommc.modularui.screen.RichTooltip(screen/RichTooltip.java:35) |
| 实现 | implements IRichTextBuilder<RichTooltip>(api/drawable/IRichTextBuilder.java) |
| 接口 | ITooltip<W>(api/widget/ITooltip.java) |
| 事件 | RichTooltipEvent(screen/RichTooltipEvent.java:14,extends Event) |
| 默认位置 | RichTooltip.Pos.NEXT_TO_MOUSE(ModularUIConfig.java:22) |
功能
Pos:8 种锚定方式
RichTooltip.Pos 定义于 screen/RichTooltip.java:444,有 8 个常量。
每个常量带一个 GuiAxis 参数(可空),表示该方向沿哪个轴展开:
| 常量 | 行 | 关联轴 |
|---|---|---|
ABOVE |
:446 |
GuiAxis.Y |
BELOW |
:447 |
GuiAxis.Y |
LEFT |
:448 |
GuiAxis.X |
RIGHT |
:449 |
GuiAxis.X |
VERTICAL |
:450 |
GuiAxis.Y |
HORIZONTAL |
:451 |
GuiAxis.X |
NEXT_TO_MOUSE |
:452 |
null(跟随鼠标) |
FIXED |
:453 |
null(固定坐标) |
ABOVE/BELOW/VERTICAL 属 Y 轴,LEFT/RIGHT/HORIZONTAL 属 X 轴;
NEXT_TO_MOUSE 与 FIXED 不绑定任何轴。
在控件上挂提示气泡
ITooltip<W>(api/widget/ITooltip.java)共定义 23 个 default W 构建器方法,
按用途分 6 组(行号均为 ITooltip.java):
| 组 | 方法 | 行 |
|---|---|---|
| 取自身 | getThis() |
:53 |
| 构造 | tooltip(Consumer<RichTooltip>) |
:64 |
| 静态 / 动态 | tooltipStatic(Consumer<RichTooltip>) |
:75 |
tooltipBuilder(Consumer<RichTooltip>) |
:87 |
|
tooltipDynamic(Consumer<RichTooltip>) |
:98 |
|
| 位置 | tooltipPos(RichTooltip.Pos) |
:109 |
tooltipPos(int x, int y) |
:121 |
|
tooltipAlignment(Alignment) |
:132 |
|
| 外观 | tooltipTextShadow(boolean) |
:144 |
tooltipTextColor(int) |
:155 |
|
tooltipScale(float) |
:166 |
|
tooltipShowUpTimer(int) |
:177 |
|
tooltipAutoUpdate(boolean) |
:190 |
|
tooltipHasTitleMargin(boolean) |
:201 |
|
tooltipLinePadding(int) |
:212 |
|
| 添加元素 | addTooltipElement(String) |
:217 |
addTooltipElement(IDrawable) |
:222 |
|
addTooltipLine(ITextLine) |
:227 |
|
addTooltipLine(IDrawable) |
:238 |
|
addTooltipLine(String) |
:249 |
|
| 批量添加 | addTooltipDrawableLines(Iterable<IDrawable>) |
:259 |
addTooltipStringLines(Iterable<String>) |
:270 |
|
| 清除 | removeAllTooltips() |
:275 |
tooltipStatic / tooltipBuilder / tooltipDynamic 三者签名完全相同
(都是 Consumer<RichTooltip>),区别只在求值时机——
具体差异见各自实现处的 javadoc。
Widget 侧的对应方法:tooltip()(widget/Widget.java:319,取出已有气泡)、
tooltip(RichTooltip)(:333,替换)、markTooltipDirty()(:342,标脏待重建)。
数值
| 数值名 | 值 | 来源 |
|---|---|---|
| 默认锚定位置 | Pos.NEXT_TO_MOUSE |
ModularUIConfig.java:22 |
| 可选位置数 | 8 | screen/RichTooltip.java:446-453 |
交互
| 触发 | 行为 |
|---|---|
| 鼠标悬停控件 | 显示气泡(IGuiElement.isHovering(),api/widget/IGuiElement.java:82) |
| 悬停持续 N tick | isHoveringFor(int ticks)(IGuiElement.java:92)用于延迟显示 |
| 鼠标移入 / 移出区域 | onMouseEnterArea() / onMouseLeaveArea()(IGuiElement.java:72/:77) |
| 气泡内容变化 | 调 Widget.markTooltipDirty()(widget/Widget.java:342) |