API 参考 / spi 包:音符与判定 SPI
JudgeInput
判定输入:宿主为一次判定构造的上下文,传入 NoteTypeDefinition.onJudge。字段都是快照值,不随判定过程变化。
方法速览
| 方法 | 用途 |
|---|---|
noteTime() | 音符时间(毫秒) |
judgeTime() | 判定时间(毫秒) |
deltaMs() | judgeTime - noteTime |
lane() | 音符轨道 |
isHoldEnd() | 是否为长按终点判定 |
note() | 该音符的运行时数据 |
noteTime()
签名:
java
long noteTime();行为:音符时间(毫秒)。长音符合成判定时始终是起点时间。
示例:
java
long target = input.noteTime();judgeTime()
签名:
java
long judgeTime();行为:本次判定发生的时间(毫秒,一般为当前音乐时间)。
示例:
java
long at = input.judgeTime();deltaMs()
签名:
java
long deltaMs();行为:judgeTime - noteTime。正值表示迟到、负值表示早到、0 表示正好。
示例:
java
if (Math.abs(input.deltaMs()) <= 30) { /* 正中 */ }lane()
签名:
java
int lane();行为:音符所在轨道(0-based)。
示例:
java
int lane = input.lane();isHoldEnd()
签名:
java
boolean isHoldEnd();行为:true 表示这是长按终点判定(终点只检查是否仍按住,不比较时间差),false 为起点/普通判定。
示例:
java
if (!input.isHoldEnd()) { /* 起点判定 */ }note()
签名:
java
NoteData note();行为:该音符的运行时数据。自定义类型返回 deserialize 产出的自有实例;内置类型返回只读适配器(setTime / setLane / setEndTime 转发内核音符,setJudged / setExtensionData 无操作)。可在 onJudge 中读取扩展数据。
示例:
java
NoteData note = input.note();
Object data = note.extensionData();完整签名
java
public interface JudgeInput {
long noteTime();
long judgeTime();
long deltaMs();
int lane();
boolean isHoldEnd();
NoteData note();
}线程:源码未声明额外线程约束;宿主在游玩更新线程同步传入。
生命周期阶段:运行期判定回调内使用。
稳定性:2.0 起冻结:2.x 内只增不破(禁止删签名/改签名/改语义)。