JavaFX 媒体播放器无法在 start 方法内使用 do while 循环;

标签 java javafx

我不知道为什么会发生这种情况。我尝试了我能做的一切,但如果我在 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/

相关文章:

java - 盒子里的组件布局很奇怪

JavaFX刷新方法内的进度条

JavaFX Canvas 重绘不执行任何操作

dialog - JavaFX8 : How do I set the initially focused control in a Stage?

java - Spock 中 TestNG 数据提供者的模拟

java - 基于 Web 的应用程序的 JDBC 插入语句中的同步

java - 如何避免丢失 POJO 中字段值的设置?

java - 静态初始化 block 与构造函数java

java - 如何将 JavaFX ComboBox 中的选择转换为字符串

css - 效果链 - javafx 中 effect.setInput 的 CSS 等价物