Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在打开shuffle的情况下跳到下一首歌?自然反应_Javascript_React Native - Fatal编程技术网

Javascript 如何在打开shuffle的情况下跳到下一首歌?自然反应

Javascript 如何在打开shuffle的情况下跳到下一首歌?自然反应,javascript,react-native,Javascript,React Native,我正在制作一个音乐播放器,我遇到了一个问题,想不出办法解决这个问题,我有洗牌模式,当洗牌打开时,我按下下一首歌,它进入下一首歌,当曲目结束时,它验证洗牌是否打开,如果是,重复曲目,如果不是,下一首歌,这里的问题是当我从队列中选择另一首曲目时,因为当我这样做时,监听器将执行,再次验证是否打开了shuffle,是否关闭了next,从而导致循环,我只能按next进入下一首歌曲,而不能从队列中进入,代码如下: state = { shuffle: true, next_song: false,

我正在制作一个音乐播放器,我遇到了一个问题,想不出办法解决这个问题,我有洗牌模式,当洗牌打开时,我按下下一首歌,它进入下一首歌,当曲目结束时,它验证洗牌是否打开,如果是,重复曲目,如果不是,下一首歌,这里的问题是当我从队列中选择另一首曲目时,因为当我这样做时,监听器将执行,再次验证是否打开了shuffle,是否关闭了next,从而导致循环,我只能按next进入下一首歌曲,而不能从队列中进入,代码如下:

state = {
  shuffle: true,
  next_song: false,
  repeat_song: "",
}

if (this.state.repeat && !this.state.next_song) { //if user want to repeat a track
                await TrackPlayer.pause();
                await TrackPlayer.skip(this.state.repeat_song);
                TrackPlayer.play();
            }else {
                let {title} = await TrackPlayer.getTrack(current_song);
                let {current_track_id, current_track, cover, artist} = await this.get_info_track(tracks, title);
                await AsyncStorage.setItem("last_song", JSON.stringify(current_track));
                await AsyncStorage.setItem("last_song_duration", JSON.stringify(0));
                this.setState({
                    current_track_id: current_track_id, 
                    current_track: current_track, 
                    cover: cover, 
                    artist: artist,
                    repeat_song_id: current_song,
                    last_song_duration: 0,
                    next_song: false,
                });
            }

update_next_song = () => {    //this will execute when the user press next, once is executed will be passed to false again 
    this.setState({next_song: true});
}

然后问题是当我从队列中选择时,下一首歌曲已经设置为false,并且第一个条件将始终为true,所以我想不出一种方法来实现这一点。您好,您可以将歌曲数组放入

 TrackPlayer.add(Array). 
和使用

TrackPlayer.skipToNext()
TrackPlayer.skipToPrevious();
它将根据您的要求工作,谢谢:-)


嗨,你可以把一系列的歌曲放进去

 TrackPlayer.add(Array). 
和使用

TrackPlayer.skipToNext()
TrackPlayer.skipToPrevious();
它将根据您的要求工作,谢谢:-)


这不起作用,我已经运行了skiptoNext,事件将捕获下一首歌曲。您可以向您展示TrackPlayer.add()。函数如何工作?这不起作用,我已经运行了skiptoNext,事件将捕获下一首歌曲。请向您展示TrackPlayer.add()。功能如何工作?