1
這是我關於JavaFX的第二個問題。我很抱歉,因爲我不是一個有經驗的Java程序員,也不是JavaFX的新手。我不明白以前的答案,並會在稍後再讀一遍。但是現在我有下一個問題。我重寫我的程序如下:如何同步播放多段mp3的片段?
import java.io.FileNotFoundException;
import java.io.IOException;
import static java.lang.Thread.sleep;
import java.util.concurrent.TimeUnit;
import javafx.application.Application;
import javafx.scene.media.Media;
import javafx.scene.media.MediaPlayer;
import javafx.stage.Stage; import javafx.util.Duration;
public class JavaFXMediaPlayer05 extends Application {
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage stage) throws FileNotFoundException,IOException, InterruptedException {
Media media = new Media("file:///D:/1016_00.mp3");
//Set and play the first fragment of mp3-file
MediaPlayer mediaPlayer1 = new MediaPlayer(media);
mediaPlayer1.setStartTime(Duration.millis(1219.0));
mediaPlayer1.setStopTime(Duration.millis(2728.0));
mediaPlayer1.play();
System.out.println("1st fragment played!");
TimeUnit.SECONDS.sleep(3);
//Set and play the second fragment
MediaPlayer mediaPlayer2 = new MediaPlayer(media);
mediaPlayer2.setStartTime(Duration.millis(3947.0));
mediaPlayer2.setStopTime(Duration.millis(6629.0));
mediaPlayer2.play();
System.out.println("2nd fragment played!");
TimeUnit.SECONDS.sleep(3);
//Set and play the third fragment
MediaPlayer mediaPlayer3 = new MediaPlayer(media);
mediaPlayer3.setStartTime(Duration.millis(7453.0));
mediaPlayer3.setStopTime(Duration.millis(10704.0));
mediaPlayer3.play();
System.out.println("3rd fragment played!");
//Just sleep
System.out.println("pre-sleep");
TimeUnit.SECONDS.sleep(3);
System.out.println("after-sleep");
}
}
我在NetBeans中逐步調試它。我得到了一個奇怪的結果。我在mediaplayer.play()中聽到聲音,但只在方法start()結束時聽到聲音。所有3個片段一次播放。我如何管理他們連續播放?我是否必須多次啓動方法start() - 每個片段都需要一次?還是有另一種方式?