Skip to content

AMLL 特定情况下无法滚动 #63

Description

@MoYingJi

检查清单

  • 我已检索仓库中所有的 Issues,确保我没有重复提交问题;或有相似 Issue,但我觉得我的情况不包含在那个相似 Issue 之内
  • 我已经找到了可以复现这个问题的方法,并且写在了下面的「具体信息」中
  • 此问题可以在我的设备和当前环境中稳定复现
  • 此问题可以在最新版本 (Latest Release) 中复现
  • 此问题是在我更新到当前版本后出现的

当前系统环境

Arch Linux

当前 Node.js 及 npm 版本

No response

当前版本

651e945

具体信息

无法稳定复现

  1. 确保「歌词渲染引擎」为 AMLL
  2. 任意播放歌曲(不要打开歌词界面)
  3. 暂停歌曲
  4. 打开歌词界面
  5. 鼠标放在歌词组件上,滚动鼠标或触控板,观察到无法滚动(无法滚动出一定距离,就像弹簧一样,只能滚动出附近一两行)
  6. 播放后恢复正常,即使再暂停也正常(关闭歌词界面后,保持暂停状态,再次打开歌曲界面,可以复现)

这不是 AMLL 的问题,而是本项目使用 AMLL 的方式有问题。因为我在 SPlayer 和 AMLL Player 上都从未出现过此问题

我让 copilot 修了一下。情况貌似有所好转。但因为它无法稳定复现,我也不能确保它解决了问题,而且我看不懂这个 AMLL 组件是如何工作的,所以我没直接开 pr

patch
From 71fb495eaa2d87f600f4ab6377b4759a306daf78 Mon Sep 17 00:00:00 2001
From: MoYingJi <moyingjiaw@outlook.com>
Date: Wed, 1 Jul 2026 02:46:57 +0800
Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=20AMLL=20=E6=9A=82?=
 =?UTF-8?q?=E5=81=9C=E6=97=B6=E6=89=93=E5=BC=80=E6=97=A0=E6=B3=95=E6=BB=9A?=
 =?UTF-8?q?=E5=8A=A8?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/components/player/Lyrics/AMLLLyrics.vue | 12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)

diff --git a/src/components/player/Lyrics/AMLLLyrics.vue b/src/components/player/Lyrics/AMLLLyrics.vue
index 39c6dca..99f7165 100644
--- a/src/components/player/Lyrics/AMLLLyrics.vue
+++ b/src/components/player/Lyrics/AMLLLyrics.vue
@@ -52,6 +52,7 @@ const settings = useSettingsStore();
 const wrapperRef = ref<HTMLDivElement | null>(null);
 const playerRef = ref<CoreLyricPlayer>();
 const bottomLineEl = ref<HTMLElement>();
+const clockInitialized = ref(false);
 
 // 是否被父组件冻结
 const isFrozen = ref(false);
@@ -134,8 +135,8 @@ onMounted(() => {
   playerRef.value.addEventListener("line-click", handleLineClick);
 
   // 应用初始状态
-  if (props.initialTime > 0) {
-    playerRef.value.setCurrentTime(props.initialTime);
+  if (Number.isFinite(props.initialTime) && props.initialTime >= 0) {
+    playerRef.value.setCurrentTime(props.initialTime, true);
   }
   if (processedLyrics.value.length > 0) {
     playerRef.value.setLyricLines(processedLyrics.value);
@@ -159,6 +160,13 @@ onUnmounted(() => {
 watchEffect(() => {
   const player = playerRef.value;
   if (!player) return;
+
+  // AMLL 在初始 paused 挂载时需先启动一次内部时钟,之后手动滚动才可正常生效
+  if (!clockInitialized.value) {
+    player.resume();
+    clockInitialized.value = true;
+  }
+
   if (!isFrozen.value && !document.hidden) {
     if (props.playing) {
       player.resume();
-- 
2.54.0

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions