在下面的代码中,我已经在mview3中播放了mp4视频,当我点击切换按钮时,我想要mview3停止时的淡出效果和mview2启动时的一些淡入效果。
swtch.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent arg0) {
time1 = mplayer3.getCurrentTime();
mplayer2.setStartTime(time1);
mplayer2.play();
secondaryLayout.getChildren().add(mview2);
secondaryLayout.getChildren().remove(mview3);
请建议任何可能的替代方案以启用效果。
答案 0 :(得分:2)
我为你做了一个例子,也许你可以查看this页面,并阅读有关Trasition及其子类的内容。在这个例子中,我使用了FadeTransition并在StackPane上添加了MediaView,因此你可以淡出一个View并淡出另一个。
import javafx.animation.FadeTransition;
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.Pane;
import javafx.scene.layout.StackPane;
import javafx.scene.layout.VBox;
import javafx.scene.media.Media;
import javafx.scene.media.MediaPlayer;
import javafx.scene.media.MediaView;
import javafx.stage.Stage;
import javafx.util.Duration;
public class VideoPlayer extends Application {
private static final String MEDIA_URL = "http://download.oracle.com/otndocs/products/javafx/oow2010-2.flv";
@Override
public void start(Stage primaryStage) {
VBox root = new VBox();
Media media = new Media(MEDIA_URL);
Media yt = new Media(MEDIA_URL);
final MediaPlayer mediaPlayer = new MediaPlayer(media);
final MediaPlayer mediaPlayer1 = new MediaPlayer(yt);
MediaView mediaView2 = new MediaView(mediaPlayer1);
mediaView2.setOpacity(0.0);
MediaView mediaView3 = new MediaView(mediaPlayer);
//root.getChildren().add(mediaView);
Button play = new Button("Play");
play.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent t) {
mediaPlayer.play();
}
});
Pane hBox = new StackPane();
final FadeTransition fadeOut = new FadeTransition(Duration.millis(3000), mediaView3);
fadeOut.setFromValue(1.0);
fadeOut.setToValue(0.0);
final FadeTransition fadeIn = new FadeTransition(Duration.millis(3000), mediaView2);
fadeIn.setFromValue(0.0);
fadeIn.setToValue(1.0);
hBox.getChildren().add(mediaView3);
hBox.getChildren().add(mediaView2);
root.getChildren().add(play);
Button stopBtn = new Button("Stop");
stopBtn.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent t) {
Duration currentTime = mediaPlayer.getCurrentTime();
mediaPlayer.stop();
mediaPlayer1.setStartTime(currentTime);
fadeOut.play();
fadeIn.play();
mediaPlayer1.play();
}
});
root.getChildren().add(stopBtn);
root.getChildren().add(hBox);
Scene scene = new Scene(root, 1024, 768);
primaryStage.setTitle("Hello World!");
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
希望有所帮助
帕特里克