前提・実現したいこと
javaを使って簡単なクイズゲームを作成しています.問題に回答して「次へ」ボタンを押すと,次の問題画面に遷移します.問題の間に動画を表示させたいのですが上手く組み込めません.(問題1→次へボタン→動画再生のクラス参照→問題2の画面)という流れを作りたいです.
発生している問題・エラーメッセージ
動画再生とクイズのプログラムはそれぞれ個別に動きます.
また,動画クラスにsysout文を入れて確認したところ,クラスの参照自体はできていました.
考えられる原因としては,実行画面のwindowがクイズ画面と動画画面で取り合いになっているのではないかと思います.
次へボタンを押した時に,別windowで動画を再生できればいいのですが...
エラーメッセージ
該当のソースコード
javaFX
ソースコード
クイズ画面(main)
start.setOnAction(e -> { //次へボタンを押す g.start(stage); //ここでmovieクラスの実行 new JavaQuizView(); stage.hide(); random_no = RandomNumbers.randomFunction(); });
movieクラス
import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.media.Media;
import javafx.scene.media.MediaPlayer;
import javafx.scene.media.MediaView;
import javafx.stage.Stage;public class movie extends Application {
Group root = new Group();
Media media;
MediaPlayer mediaPlayer;
MediaView mediaView;@Override public void start(Stage stage) {
System.out.println("abc");
stage.show(); // ウィンドウを表示するFile file = new File("/Users/minoginji/Downloads/sample2.mp4"); // 動画ファイルを読み込む media = new Media(file.toURI().toString()); mediaPlayer = new MediaPlayer(media); mediaView = new MediaView(mediaPlayer); root.getChildren().add(mediaView); // MediaViewを追加 mediaPlayer.setOnReady(() -> { // 動画が読み込めたら int width, height; width = media.getWidth(); // 動画の幅を取得 height = media.getHeight(); // 動画の高さを取得 mediaView.setFitWidth(600); // 幅を600に設定 mediaView.setFitHeight(height * 600 / width); // 高さを調整 mediaPlayer.play(); // 動画を再生 Scene scene = new Scene(root, mediaView.getFitWidth(), mediaView.getFitHeight() + 30); // ウィンドウサイズを指定 stage.setScene(scene); // Sceneを設定 });
}
}
試したこと
ネットで調べてmovieクラスに複数windowを作るようなことをして見たのですが上手くいかないです...
補足情報(FW/ツールのバージョンなど)
初投稿で説明がかなり分かりにくく申し訳ございません.どうぞよろしくお願いします.
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/01/18 04:01