Похоже, что одной из проблем является то, что вы не использовали экземпляр MediaView
для добавления MediaPlayer
к сцене. Кроме того, вероятно, будет лучше, если вы не начнете воспроизводить мультимедиа, пока не отобразится сцена.
Я думаю, вам нужно что-то вроде этого (как полное приложение):
import scalafx.application.JFXApp
import scalafx.application.JFXApp.PrimaryStage
import scalafx.scene.{Group, Scene}
import scalafx.scene.media.{Media, MediaPlayer, MediaView}
object GameGraphics
extends JFXApp {
// Required info. Populate as necessary...
val url = ???
val windowWidth = ???
val windowHeight = ???
// Initialize the media and media player elements.
val audio = new Media(url)
val mediaPlayer = new MediaPlayer(audio)
mediaPlayer.volume = 100
// The primary stage is best defined as the stage member of the application.
stage = new PrimaryStage {
title = "Game Graphics"
width = windowWidth
height = windowHeight
scene = new Scene {
// Create a MediaView instance of the media player, and add it to the scene. (It needs
// to be the child of a Group, or the child of a subclass of Group).
val mediaView = new MediaView(mediaPlayer)
root = new Group(mediaView)
}
// Now play the media.
mediaPlayer.play()
}
}
Кроме того, вы должны предпочесть от val
до var
, особенно если нет необходимости изменять связанные переменные после их определения.
Кстати, проверить код невозможно, поэтому рассмотрите возможность размещения минимального, полного и проверяемого примера в следующий раз.