Theseus 模组文档
API 参考 / 只读视图、场景、音频与文本

ImeAnchor


想先跑起来?

这一页是签名与行为参考。自绘场景必须上报,否则中文候选框错位。直接做一遍:教程 · 自定义场景。

输入法候选框锚点(游戏全局唯一、易失)。当某个输入组件获得焦点并获得文本编辑事件时,把「输入光标」在场景逻辑空间(1280×720)中的坐标上报到这里;宿主据此把系统输入法候选窗定位到输入框光标附近(下方优先),而不是固定在画布角落。TextField 的 render 在 focused 时自动上报,自绘场景不经 render 时应手动调用 report。

方法速览

方法用途
report(double, double)上报锚点
clear()清除锚点(失焦)
x() / y()读取当前锚点(-1 = 无)

report(double, double)

java
public static void report(double x, double y);

行为:上报光标锚点(场景逻辑 1280×720 坐标)。x 为光标竖线所在位置,y 为期望候选窗顶部(通常取输入框底部);宿主会按内容区尺寸线性换算为窗口客户区像素。写入即覆盖旧值,不做范围校验。 示例:

java
ImeAnchor.report(caretX, boxBottomY);

clear()

java
public static void clear();

行为:清除锚点(失焦时调用),宿主回退默认位置。示例:

java
ImeAnchor.clear();

x()

java
public static double x();

行为:当前锚点 X;-1 表示无有效锚点。示例:

java
boolean hasAnchor = ImeAnchor.x() >= 0 && ImeAnchor.y() >= 0;

y()

java
public static double y();

行为:当前锚点 Y;-1 表示无有效锚点。示例:

java
double anchorY = ImeAnchor.y();

完整签名

java
public final class ImeAnchor {
    public static void report(double x, double y);
    public static void clear();
    public static double x();
    public static double y();
}

关键契约:未上报时宿主使用窗口内容区左下角的默认位置(x < 0 或 y < 0 均视为无有效锚点)。类为 final 且构造器私有,不可实例化,只作静态挂载点使用。

线程:源码未声明额外线程约束(锚点字段为 volatile,取值为易失快照)。

性能:源码未标注额外性能约束(仅两次静态写/读)。

稳定性:2.0 起冻结:2.x 内只增不破。