@@ -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