Skip to content

Commit 62f5e6b

Browse files
committed
fix: lyric index out of size
1 parent ce22b93 commit 62f5e6b

File tree

1 file changed

+38
-27
lines changed

1 file changed

+38
-27
lines changed

src/NonsPlayer/AMLL/Views/AMLLCard.xaml.cs

Lines changed: 38 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -34,40 +34,51 @@ private void MusicChanged(IMusic currentmusic)
3434

3535
private void OnPositionChanged(TimeSpan time)
3636
{
37-
// 获取当前和下一个歌词
38-
var currentLyric = ViewModel.LyricItems[LyricHelper.Instance.LyricPosition];
39-
var nextLyric = LyricHelper.Instance.LyricPosition < ViewModel.LyricItems.Count - 1
40-
? ViewModel.LyricItems[LyricHelper.Instance.LyricPosition + 1]
41-
: null;
42-
43-
// 当前歌词开始和结束时间
44-
var startTime = currentLyric.LyricItemModel.Lyric.StartTime;
45-
var endTime = nextLyric?.LyricItemModel.Lyric.StartTime ?? TimeSpan.MaxValue;
46-
47-
// 判断当前时间是否在当前歌词的时间范围内
48-
if (time >= startTime && time < endTime)
49-
{
50-
// 时间在当前歌词的时间范围内,继续显示当前歌词
51-
LyricHelper.Instance.LyricChanged.Invoke(currentLyric.LyricItemModel.Lyric);
52-
}
53-
else
37+
try
5438
{
55-
// 时间超出了当前歌词的范围,需要更新歌词位置
56-
if (time >= endTime && LyricHelper.Instance.LyricPosition < ViewModel.LyricItems.Count - 1)
39+
// 获取当前和下一个歌词
40+
if (LyricHelper.Instance.LyricPosition > ViewModel.LyricItems.Count - 1)
5741
{
58-
LyricHelper.Instance.LyricPosition++;
42+
return;
5943
}
60-
else if (time < startTime && LyricHelper.Instance.LyricPosition > 0)
44+
var currentLyric = ViewModel.LyricItems[LyricHelper.Instance.LyricPosition];
45+
var nextLyric = LyricHelper.Instance.LyricPosition < ViewModel.LyricItems.Count - 1
46+
? ViewModel.LyricItems[LyricHelper.Instance.LyricPosition + 1]
47+
: null;
48+
49+
// 当前歌词开始和结束时间
50+
var startTime = currentLyric.LyricItemModel.Lyric.StartTime;
51+
var endTime = nextLyric?.LyricItemModel.Lyric.StartTime ?? TimeSpan.MaxValue;
52+
53+
// 判断当前时间是否在当前歌词的时间范围内
54+
if (time >= startTime && time < endTime)
6155
{
62-
LyricHelper.Instance.LyricPosition--;
56+
// 时间在当前歌词的时间范围内,继续显示当前歌词
57+
LyricHelper.Instance.LyricChanged.Invoke(currentLyric.LyricItemModel.Lyric);
6358
}
64-
65-
// 更新歌词
66-
DispatcherQueue.TryEnqueue(() =>
59+
else
6760
{
68-
ScrollLyric();
69-
});
61+
// 时间超出了当前歌词的范围,需要更新歌词位置
62+
if (time >= endTime && LyricHelper.Instance.LyricPosition < ViewModel.LyricItems.Count - 1)
63+
{
64+
LyricHelper.Instance.LyricPosition++;
65+
}
66+
else if (time < startTime && LyricHelper.Instance.LyricPosition > 0)
67+
{
68+
LyricHelper.Instance.LyricPosition--;
69+
}
70+
71+
// 更新歌词
72+
DispatcherQueue.TryEnqueue(() =>
73+
{
74+
ScrollLyric();
75+
});
76+
}
77+
}catch
78+
{
79+
// ignore
7080
}
81+
7182
}
7283

7384
private int CalculateLyricPosition(TimeSpan time)

0 commit comments

Comments
 (0)