Skip to content

将BG行与主行绑定增加开关#438

Closed
kid141252010 wants to merge 2 commits intoamll-dev:mainfrom
kid141252010:full-refractor
Closed

将BG行与主行绑定增加开关#438
kid141252010 wants to merge 2 commits intoamll-dev:mainfrom
kid141252010:full-refractor

Conversation

@kid141252010
Copy link
Copy Markdown
Contributor

问题背景

setCurrentTime 的热行更新逻辑中,BG 行会被默认与主行绑定激活/失活。
这导致即使下游显式配置 syncMainAndBackgroundLines: false,BG 行仍可能跟随主行状态变化,而不是严格按自身时间轴工作。

根因

setCurrentTime 中多处主行与 BG 行联动逻辑未受 syncMainAndBackgroundLines 开关控制:

  • 清理 hot 行时,默认按主行 + 邻接 BG 的组合判定失活。
  • 激活主行时,默认连带激活相邻 BG 行。
  • 缺少“关闭联动时 BG 独立按自身时间轴激活”的分支。

修复内容

文件:packages/core/src/lyric-player/base.ts

  • 新增运行时开关判断:
    • const syncMainAndBackgroundLines = this.optimizeOptions.syncMainAndBackgroundLines !== false
  • 在 hot 行清理阶段:
    • BG 行不再无条件 continue
    • 当开关关闭时,BG 行按自身时间轴判定并失活。
  • 在主行激活阶段:
    • 仅当开关开启时,才连带激活相邻 BG 行。
  • 新增开关关闭分支:
    • BG 行按 startTime/endTime 独立激活,不再依赖主行联动。

影响范围

  • 默认行为不变(未设置或设置为 true 时仍保持主行-BG 联动)。
  • 仅在下游显式设置 syncMainAndBackgroundLines: false 时生效:
    • BG 行改为按自身时间轴独立激活/失活。

验证

  • 本地构建验证通过:
    • pnpm -C packages/core build

@Linho1219 Linho1219 marked this pull request as draft April 4, 2026 09:26
@kid141252010
Copy link
Copy Markdown
Contributor Author

  • 给背景歌词的出现时机提供了不同选择,可提前结束收回。
  • 缓解了意外多行高亮的情况。

@kid141252010
Copy link
Copy Markdown
Contributor Author

  • 给背景歌词的出现时机提供了不同选择,可提前结束收回。
  • 缓解了意外多行高亮的情况。
  • 由于 Test tool 在升级 AMLL依赖 以后,预览界面恢复正常,所以此PR的更改可能需要关闭/修正/补足(最近懒得vibe)先晾这吧
  • 是想改 背景歌词的弹出时机多行高亮的触发条件,当时 Codex 好像在 Test Tool 里同步改了些东西,才保障了预览界面没问题。择日鞭策他以后将更新此PR。

@Linho1219 Linho1219 closed this Apr 5, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants