为什么 mediaPlayer class 在这种情况下不起作用?

Why does the mediaPlayer class not work in this case?

所以我正在尝试创建我自己的 mp3 播放器。 mediaPlayer.play() 方法有效但暂停无效。 有人可以帮我吗?

 public void audioPlayerButtons(ActionEvent actionEvent) {

        String bip = getClass().getResource("Songs/Sing.m4a").toExternalForm();
        Media hit = new Media(bip);
        MediaPlayer mediaPlayer = new MediaPlayer(hit);

        if (actionEvent.getSource() == playbtn) {
            mediaPlayer.play();

            nowPlaying.setText("Now Playing");
            songPlayingName.setText("Sing");

        } else if (actionEvent.getSource() == pausebtn) {
            mediaPlayer.pause();


        } else if (actionEvent.getSource() == forwardbtn) {
            mediaPlayer.stop();

        } else if (actionEvent.getSource() == backwardbtn) {
            mediaPlayer.isAutoPlay();
        }

    }

您似乎正在对 MediaPlayer 的第二个实例调用暂停。

...
MediaPlayer mediaPlayer = new MediaPlayer(hit);
// each time you hit a button, you create a new MediaPlayer

        if (actionEvent.getSource() == playbtn) {
            mediaPlayer.play();
            // first time, you call play, so it plays
            nowPlaying.setText("Now Playing");
            songPlayingName.setText("Sing");

        } else if (actionEvent.getSource() == pausebtn) {
            // pause does work, but it is not the same instance that is playing
            mediaPlayer.pause();
        }
    ...

您需要在该事件范围之外实例化 mediaPlayer。像这样尝试:

   // instance variables
    String bip = getClass().getResource("Songs/Sing.m4a").toExternalForm();
    Media hit = new Media(bip);
    MediaPlayer mediaPlayer = new MediaPlayer(hit);

public void audioPlayerButtons(ActionEvent actionEvent) {        

    if (actionEvent.getSource() == playbtn) {
        mediaPlayer.play();

        nowPlaying.setText("Now Playing");
        songPlayingName.setText("Sing");

    } else if (actionEvent.getSource() == pausebtn) {
        mediaPlayer.pause();


    } else if (actionEvent.getSource() == forwardbtn) {
        mediaPlayer.stop();

    } else if (actionEvent.getSource() == backwardbtn) {
        mediaPlayer.isAutoPlay();
    }

}