如何在Javafx中切换视频剪辑时淡入淡出特殊效果?

如何在Javafx中切换视频剪辑时淡入淡出特殊效果?,javafx,javafx-2,effects,javafx-8,Javafx,Javafx 2,Effects,Javafx 8,在下面的代码中,我已经在mview3中播放了mp4视频,当我单击开关按钮时,我希望mview3停止时有淡入效果,而mview2开始时有淡入效果 swtch.setOnAction(new EventHandler<ActionEvent>() { @Override public void handle(ActionEvent arg0) { time1 = mplayer3.getCurrentTime(); mplayer2.setStartTime(ti

在下面的代码中,我已经在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);
swtch.setOnAction(新的EventHandler(){
@凌驾
公共无效句柄(ActionEvent arg0){
time1=mplayer3.getCurrentTime();
mplayer2.设置开始时间(时间1);
mplayer2.play();
secondaryLayout.getChildren().add(mview2);
secondaryLayout.getChildren().remove(mview3);

请建议启用效果的任何可能的替代方案。

我给您举了一个小例子,也许您可以看看页面,阅读一些关于Trasion及其子类的内容。在这个例子中,我使用了FadeTransition并在StackPane上添加了MediaView,这样您就可以淡出一个视图,淡入另一个视图

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);
    }

}
导入javafx.animation.FadeTransition;
导入javafx.application.application;
导入javafx.event.ActionEvent;
导入javafx.event.EventHandler;
导入javafx.scene.scene;
导入javafx.scene.control.Button;
导入javafx.scene.layout.Pane;
导入javafx.scene.layout.StackPane;
导入javafx.scene.layout.VBox;
导入javafx.scene.media.media;
导入javafx.scene.media.MediaPlayer;
导入javafx.scene.media.MediaView;
导入javafx.stage.stage;
导入javafx.util.Duration;
公共类视频播放器扩展应用{
私有静态最终字符串媒体\u URL=”http://download.oracle.com/otndocs/products/javafx/oow2010-2.flv";
@凌驾
公共无效开始(阶段primaryStage){
VBox root=新的VBox();
媒体=新媒体(媒体URL);
媒体yt=新媒体(媒体URL);
最终媒体播放器=新媒体播放器(媒体);
最终MediaPlayer mediaPlayer1=新MediaPlayer(yt);
MediaView mediaView2=新的MediaView(mediaPlayer1);
mediaView2.setOpacity(0.0);
MediaView mediaView3=新的MediaView(mediaPlayer);
//root.getChildren().add(mediaView);
按钮播放=新按钮(“播放”);
play.setOnAction(新的EventHandler(){
@凌驾
公共无效句柄(ActionEvent t){
mediaPlayer.play();
}
});
窗格hBox=新的堆栈窗格();
最终淡入淡出=新淡出淡出淡出(持续时间为3000毫秒,mediaView3);
衰减。设置自值(1.0);
衰减设置值(0.0);
最终FadeTransition fadeIn=新的FadeTransition(持续时间为3000毫秒,mediaView2);
fadeIn.setFromValue(0.0);
fadeIn.setToValue(1.0);
hBox.getChildren().add(mediaView3);
hBox.getChildren().add(mediaView2);
root.getChildren().add(play);
按钮stopBtn=新按钮(“停止”);
stopBtn.setOnAction(新的EventHandler(){
@凌驾
公共无效句柄(ActionEvent t){
持续时间currentTime=mediaPlayer.getCurrentTime();
mediaPlayer.stop();
mediaPlayer1.设置开始时间(currentTime);
淡出;
fadeIn.play();
mediaPlayer1.play();
}
});
root.getChildren().add(stopBtn);
root.getChildren().add(hBox);
场景=新场景(根,1024768);
setTitle(“你好,世界!”);
初级阶段。场景(场景);
primaryStage.show();
}
公共静态void main(字符串[]args){
发射(args);
}
}
希望能有帮助

帕特里克