我不知道为什么会发生这种情况。我尝试了我能做的一切,但如果我在 start 方法中添加 do while 循环,下面的代码将无法工作。这没有道理。我的意思是我不迭代 sound() 也不做任何花哨的事情...只是一个简单的循环来阻止我的声音被播放。
这是为什么呢?我是否需要在单独的线程中启动音频?如果是的话怎么办?
import java.io.File;
import javafx.application.Application;
import javafx.scene.media.Media;
import javafx.scene.media.MediaPlayer;
import javafx.stage.Stage;
public class SoundTest extends Application{
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage arg0) throws Exception {
sound();
do {
}
while(true);
}
public static void sound() {
String path = "test.mp3";
Media media = new Media(new File(path).toURI().toString());
MediaPlayer mediaPlayer = new MediaPlayer(media);
mediaPlayer.play();
}
}
最佳答案
您的循环正在阻塞 JavaFX 应用程序线程。在 JavaFX 中使用任何看起来像游戏循环的东西肯定是错误的并且不会起作用。阅读有关 JavaFX 并发性的教程。
关于JavaFX 媒体播放器无法在 start 方法内使用 do while 循环;,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37568551/