0
目前,我有一個場景,多個媒體視圖,每個媒體視圖都有自己的播放和暫停按鈕,在fxml中。我想知道是否有一種方法可以播放/暫停mediaview的按鈕,而不必爲每個媒體視圖製作播放/暫停控制器。下面是我不希望這樣做的乏味方式的一個例子。使用一個控制器播放/暫停多個MediaViews JavaFX FXML
的FXML
<StackPane alignment="CENTER">
<MediaView fx:id="mediaView" styleClass="mediaView">
<mediaPlayer>
<MediaPlayer fx:id="mediaPlayer" autoPlay="false">
<media>
<Media source="@../vid/vid1.mp4"/>
</media>
</MediaPlayer>
</mediaPlayer>
</MediaView>
<Button fx:id="btn_play1" onAction="#handlePlay1" alignment="CENTER" styleClass="btn_play"/>
<Button fx:id="btn_pause1" onAction="#handlePause1" alignment="CENTER" styleClass="btn_pause" visible="false"/>
</StackPane>
<StackPane alignment="CENTER">
<MediaView fx:id="mediaView2" styleClass="mediaView">
<mediaPlayer>
<MediaPlayer fx:id="mediaPlayer2" autoPlay="false">
<media>
<Media source="@../vid/vid2.mp4"/>
</media>
</MediaPlayer>
</mediaPlayer>
</MediaView>
<Button fx:id="btn_play2" onAction="#handlePlay2" alignment="CENTER" styleClass="btn_play"/>
<Button fx:id="btn_pause2" onAction="#handlePause2" alignment="CENTER" styleClass="btn_pause" visible="false"/>
控制器
@FXML
private void handlePause1(ActionEvent event) throws IOException {
mediaPlayer.pause();
btn_pause1.setVisible(false);
btn_play1.setVisible(true);
}
@FXML
private void handlePlay1(ActionEvent event) throws IOException {
mediaPlayer.play();
btn_play1.setVisible(false);
btn_pause1.setVisible(true);
mediaActive = true;
}
@FXML
private void handlePause2(ActionEvent event) throws IOException {
mediaPlayer1.pause();
btn_pause2.setVisible(false);
btn_play2.setVisible(true);
}
@FXML
private void handlePlay2(ActionEvent event) throws IOException {
mediaPlayer1.play();
btn_play2.setVisible(false);
btn_pause2.setVisible(true);
mediaActive = true;
}
我無法從你的描述中看出你目前是如何實現這一點的;你可能需要顯示一些代碼。 –
參考你的問題,我可以推斷你不想同時播放「MediaPlayer」。爲什麼你需要多個'MediaViews'? – ItachiUchiha