跳到主要内容

GUI

Screen

界面

AbstractWidget

组件

Button

按钮

EditBox

输入框

字符串渲染流程:

  1. 字符串由value储存
  2. 渲染起始位置displayPossetHighlightPos中由尾端减去getInnerWidth(元素宽度-边框宽度)得到
  3. renderWidget中通过this.font.plainSubstrByWidth截取从displayPos开始的getInnerWidth长度的字符串
  4. 检查字串不为空,pGuiGraphics.drawString渲染

如果value为空且未获焦点,绘制hint
如果有suggestion,会在文本末尾绘制
高亮区域=CursorPoshighlightPos的区域

杂项

Narratable

叙述功能

无障碍功能,用于屏幕阅读器

AbstactWidget继承了NarratableEntry

逻辑是按照Screen中的一个循环不断检测Delay
如果当前时间大于下一次播放时间,且大于禁止播放时间
就执行当前GUI的叙述检查

然后遍历Screen中的narratables
检查isActive中返回true的项(似乎是默认返回true,待检查)
如果有多项(一个GUI内有多个可叙述的组件),就叙述优先级为FOCUSED的项
并且输出Press Tab to navigate to next element的提示

可以用Tab和方向键选择组件
触发FocusNavigationEvent
如果使用Tab,则从Screen#this.children中顺序读取
如果使用方向键,则按照组件坐标从上到下,左侧优先读取