API 参考 / spi 包:音符与判定 SPI
NoteParseContext
想先跑起来?
这一页是签名与行为参考。解析期只读上下文。直接做一遍:教程 · 添加新音符类型。
谱面解析上下文,仅在 deserialize / onCreateRuntime 期间由宿主传入,用于让解析逻辑感知谱面规模。不要在运行期(判定/渲染回调)保存或使用该实例。
方法速览
| 方法 | 用途 |
|---|---|
totalLanes() | 谱面总轨道数 |
bpm() | 谱面主 BPM(0ms 处) |
contentScale() | 内容缩放比例(当前宿主恒为 1.0) |
totalLanes()
签名:
java
int totalLanes();行为:谱面总轨道数,可用于校验或按轨道数换算自定义字段。
示例:
java
int lanes = ctx.totalLanes();bpm()
签名:
java
int bpm();行为:谱面 0ms 处 BPM 的四舍五入整数值;取 BPM 抛异常时为 0(宿主兜底,不向模组抛错)。
示例:
java
double beatMs = 60_000.0 / Math.max(1, ctx.bpm());contentScale()
签名:
java
double contentScale();行为:谱面内容缩放比例。当前宿主在加载路径固定传 1.0;实现应按接口语义使用(不要假设它永远为 1),也不要把它与轨道缩放混用。
示例:
java
double scaled = raw * ctx.contentScale();完整签名
java
public interface NoteParseContext {
int totalLanes();
int bpm();
double contentScale();
}线程:源码未声明额外线程约束;宿主在谱面解析线程同步传入。
生命周期阶段:仅解析期(deserialize / onCreateRuntime)内有效。
稳定性:2.0 起冻结:2.x 内只增不破(禁止删签名/改签名/改语义)。