Tôi vừa bắt đầu làm việc với JavaFX. Tôi biết cách cơ bản của nó hoạt động. Tôi đã cố gắng sử dụng các phương tiện truyền thông và các lớp mediaplayer để chơi một âm thanh, được gọi là "sound.mp3". Tôi đang lập trình trong nhật thực và tôi có tệp âm thanh trong thư mục src, cùng thư mục với "(gói mặc định)". Đây là mã của tôi:Cách phát âm thanh với JavaFX
import javafx.scene.media.*;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class Main extends Application{
public static void main(String[] args){
launch(args);
}
@Override
public void start(Stage primaryStage){
primaryStage.setTitle("Hello World!");
String ssound = "sound.mp3";
Media sound = new Media(ssound);
MediaPlayer mediaPlayer = new MediaPlayer(sound);
mediaPlayer.play();
StackPane root = new StackPane();
primaryStage.setScene(new Scene(root, 800, 450));
primaryStage.show();
}
}
Hãy cho tôi biết tôi đang làm gì sai.
Đây là điều thông báo lỗi từ giao diện điều khiển:
Exception in Application start method
Exception in thread "main" java.lang.RuntimeException: Exception in Application start method
at com.sun.javafx.application.LauncherImpl.launchApplication1(Unknown Source)
at com.sun.javafx.application.LauncherImpl.access$000(Unknown Source)
at com.sun.javafx.application.LauncherImpl$1.run(Unknown Source)
at java.lang.Thread.run(Thread.java:724) Caused by: java.lang.IllegalArgumentException: uri.getScheme() == null!
at com.sun.media.jfxmedia.locator.Locator.<init>(Unknown Source)
at javafx.scene.media.Media.<init>(Unknown Source)
at Main.start(Main.java:16)
at com.sun.javafx.application.LauncherImpl$5.run(Unknown Source)
at com.sun.javafx.application.PlatformImpl$5.run(Unknown Source)
at com.sun.javafx.application.PlatformImpl$4$1.run(Unknown Source)
at com.sun.javafx.application.PlatformImpl$4$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.javafx.application.PlatformImpl$4.run(Unknown Source)
at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(Unknown Source)
at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
at com.sun.glass.ui.win.WinApplication.access$100(Unknown Source)
at com.sun.glass.ui.win.WinApplication$3$1.run(Unknown Source) ... 1 more
Dựa trên 'uri.getScheme() == null', tôi giả sử bạn cần cung cấp URI cho tệp âm thanh, thay vì chỉ một tên tệp. –
"Nguồn phải đại diện cho một URI hợp lệ và không thay đổi được. Chỉ hỗ trợ các URL HTTP, FILE và JAR." http://docs.oracle.com/javafx/2/api/javafx/scene/media/Media.html#Media(java.lang.String) –