如何根据isPlaying状态控制nextTrack()与prevTrack()函数的执行逻辑?
解决方案
这其实很容易实现,只需要在nextTrack()和prevTrack()里根据isPlaying的状态来决定要不要调用playTrack()就好啦。我帮你修改了代码,还顺便修正了原代码里的一个小bug,具体如下:
function nextTrack() { if (track_index < track_list.length - 1) track_index += 1; else track_index = 0; loadTrack(track_index); // 根据当前播放状态决定是否自动播放新曲目 if (isPlaying) { playTrack(); } } function prevTrack() { if (track_index > 0) track_index -= 1; else track_index = track_list.length - 1; // 修正原代码索引越界的bug loadTrack(track_index); // 根据当前播放状态决定是否自动播放新曲目 if (isPlaying) { playTrack(); } }
逻辑说明
- 核心改动就是在加载完新曲目后,增加了
if (isPlaying)的判断:如果当前处于播放状态,就自动播放刚加载的新曲目;如果当前是暂停状态,就只加载曲目但不播放,保持暂停状态。 - 另外提一下原
prevTrack()里的小问题:当track_index已经是0时,原代码设置track_index = track_list.length会导致数组索引越界(数组最后一项的索引是track_list.length - 1),所以我把这部分修正了,避免出现报错。
这样修改后就完全符合你想要的逻辑啦~
内容的提问来源于stack exchange,提问作者seth
相关产品推荐
相关产品推荐

