Vous trouverez ci-dessous l'exemple de code, avec d'autres caractéristiques laissées de côté. Le code ci-dessous englobe uniquement le lecteur multimédia. Il est utilisé sur un écran de menu pour un projet sur lequel je travaille. Mon problème est d'obtenir le bouton musicButton (qui est un bouton à bascule - On/Off) pour fonctionner correctement. En utilisant le code suivant, lorsque j'interagis avec le bouton bascule de musique, la musique de lecture s'arrête. Lorsque je le clique à nouveau pour reprendre la lecture, il ne reprend pas. Il s'arrête une fois et s'arrête complètement.JavaFX - Bouton d'activation/désactivation de la musique (ne fonctionne pas)
Vous pouvez voir que j'ai essayé simplement en utilisant les valeurs booléennes du bouton bascule dans deux déclarations if ... Si elle est éteinte et pressée, mettre en pause la musique. Si c'est activé et pressé, reprenez la musique. Le problème est, comme indiqué plus haut, de mettre en pause la musique mais elle ne peut pas être reprise. J'ai essayé quelques combinaisons avec des boucles, mais rien n'a fonctionné non plus.
Je pense que si les instructions sont trop simples pour cela. J'ai parcouru JavaDocs et divers articles en ligne mais je ne trouve rien de définitif. J'ai lu un peu sur les auditeurs, mais ils semblent trop complexes pour un interrupteur marche/arrêt.
Ma question: Comment mettre le musicButton en pause/lire la musique, quand l'utilisateur clique dessus?
Toute aide est appréciée, merci.
-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);
}
}
Solution très simple ... Merci beaucoup. Tout simplement besoin d'être dans le même bloc de gestionnaire ... Je vois maintenant. Merci encore! – Psychobagger
À tout moment. Si cela a résolu votre problème, veuillez le sélectionner comme réponse. –