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 内只增不破。