Unten ist das Codebeispiel mit anderen weggelassenen Funktionen. Der folgende Code umfasst nur den Media Player. Es wird auf einem Menübildschirm für ein Projekt verwendet, an dem ich gerade arbeite. Mein Problem ist, dass der MusicButton (der eine Umschalttaste ist - On/Off) ordnungsgemäß funktioniert. Mit dem folgenden Code wird die Musikwiedergabe unterbrochen, wenn ich mit der Umschalttaste für die Musik interagiere. Wenn ich es erneut anklicke, um die Wiedergabe fortzusetzen, wird es nicht fortgesetzt. Es bleibt einmal stehen und hört auf.JavaFX - Musik Ein/Aus-Umschalttaste (funktioniert nicht)
Sie können sehen, ich habe versucht, einfach die booleschen Werte der Umschaltfläche in zwei if-Anweisungen zu verwenden ... Wenn es aus ist und gedrückt, pausieren Sie die Musik. Wenn es eingeschaltet ist und gedrückt wird, fahren Sie mit der Musik fort. Das Problem ist, wie bereits erwähnt wurde, dass die Musik pausiert, aber nicht fortgesetzt werden kann. Ich habe einige Kombinationen mit Loops ausprobiert, aber auch nichts hat funktioniert.
Ich denke, wenn Aussagen zu einfach dafür sind. Ich habe die JavaDocs und verschiedene Online-Artikel durchforstet, aber ich kann nichts definitives finden. Ich habe ein wenig über Zuhörer gelesen, aber sie erscheinen übermäßig komplex für einen Ein-/Ausschalter.
Meine Frage: Wie bekomme ich den MusicButton zum Anhalten/Abspielen der Musik, wenn der Benutzer darauf klickt?
Jede Hilfe wird geschätzt, danke.
-Bagger
/* A simple game, the mechanics not yet implemented.
This is simply working on the title screen. */
import java.io.File;
import javafx.application.Application;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.ToggleButton;
import javafx.scene.layout.VBox;
import javafx.scene.media.Media;
import javafx.scene.media.MediaPlayer;
import javafx.stage.Stage;
public class MenuFX extends Application {
@Override
public void start (Stage primaryStage) {
// Make the window a set size...
primaryStage.setResizable(false);
// Create media player
// Rather than inputting the entire absolute URI, which would confine the program
// to the creator's device, we create a new file, grab the URI on whatever machine
// the program is running on and convert it to a string... portability.
Media menuMusic = new Media(new File("music/menu.mp3").toURI().toString());
MediaPlayer menuPlayer = new MediaPlayer(menuMusic);
// Want to see the absolute URI? Uncomment the next line
//System.out.println(new File("music/menu.mp3").toURI().toString());
// Adjust the cycles and volume then start playing menu music
// Lazy, but it will suffice
menuPlayer.setCycleCount(999999999);
menuPlayer.setVolume(0.1);
menuPlayer.setAutoPlay(true);
/*
Need assistance here
*/
// Create music toggle button
ToggleButton musicButton = new ToggleButton("Music On/Off");
if (musicButton.isSelected() == false) {
musicButton.setOnAction(e -> menuPlayer.pause());
}
if (musicButton.isSelected() == true) {
musicButton.setOnAction(e -> menuPlayer.play());
}
// Add all nodes to the vbox pane and center it all
// Must be in order from top to bottom
menuVBox.getChildren().add(musicButton);
menuVBox.setAlignment(Pos.CENTER);
// New scene, place pane in it
Scene scene = new Scene(menuVBox, 630, 730);
// Place scene in stage
primaryStage.setTitle("-tiles-");
primaryStage.setScene(scene);
primaryStage.show();
}
// Needed to run JavaFX w/o the use of the command line
public static void main(String[] args) {
launch(args);
}
}
Sehr einfache Lösung ... Vielen Dank. Alles musste nur im selben Handlerblock sein ... ich sehe es jetzt. Danke nochmal! – Psychobagger
jederzeit. Wenn dies Ihr Problem gelöst hat, wählen Sie es bitte als Antwort aus. –