麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > Java > 正文

javafx實現圖片3D翻轉效果方法實例

2019-11-26 16:11:31
字體:
來源:轉載
供稿:網友

實現步驟: 1、定義FlipView對象。包含以下屬性:

復制代碼 代碼如下:

    //正面視圖
public Node frontNode;
//反面視圖
public Node backNode;
//是否翻轉
boolean flipped = false;
//翻轉角度
DoubleProperty time = new SimpleDoubleProperty(Math.PI / 2);
//正面翻轉特效
PerspectiveTransform frontEffect = new PerspectiveTransform();
//反面翻轉特效
PerspectiveTransform backEffect = new PerspectiveTransform();

 create方法返回需要顯示的內容:

復制代碼 代碼如下:

private void create() {
        time.addListener(new ChangeListener() {
            @Override
            public void changed(ObservableValue<? extends Number> arg0,
                    Number arg1, Number arg2) {
                setPT(frontEffect, time.get());
                setPT(backEffect, time.get());
            }
        });
        anim.getKeyFrames().addAll(frame1, frame2);
        backNode.visibleProperty().bind(
                Bindings.when(time.lessThan(0)).then(true).otherwise(false));

        frontNode.visibleProperty().bind(
                Bindings.when(time.lessThan(0)).then(false).otherwise(true));
        setPT(frontEffect, time.get());
        setPT(backEffect, time.get());
        frontNode.setEffect(frontEffect);
        backNode.setEffect(backEffect);
        getChildren().addAll(backNode, frontNode);
    }

以上代碼需要注意的是: 隨著time值的變化frontEffect和backEffect的值也會隨著變換。 2、PerspectiveTransform特效的實現使用了Math.sin()和Math.cos()方法模擬3D角度變換。 具體實現如下:
復制代碼 代碼如下:

private void setPT(PerspectiveTransform pt, double t) {
        double width = 200;
        double height = 200;
        double radius = width / 2;
        double back = height / 10;
        pt.setUlx(radius - Math.sin(t) * radius);
        pt.setUly(0 - Math.cos(t) * back);
        pt.setUrx(radius + Math.sin(t) * radius);
        pt.setUry(0 + Math.cos(t) * back);
        pt.setLrx(radius + Math.sin(t) * radius);
        pt.setLry(height - Math.cos(t) * back);
        pt.setLlx(radius - Math.sin(t) * radius);
        pt.setLly(height + Math.cos(t) * back);
    }

3、角度變換在1秒的時間內從3.14/2變換到-3.14/2。
復制代碼 代碼如下:

KeyFrame frame1 = new KeyFrame(Duration.ZERO, new KeyValue(time,
            Math.PI / 2, Interpolator.LINEAR));
    KeyFrame frame2 = new KeyFrame(Duration.seconds(1),
            new EventHandler() {
                @Override
                public void handle(ActionEvent event) {
                    flipped = !flipped;
                }
            }, new KeyValue(time, -Math.PI / 2, Interpolator.LINEAR));

 4、FlipView對象的創建:通過構造函數可以很方便的創建FlipView對象.

復制代碼 代碼如下:

ImageView image1 = new ImageView(new Image(getClass()
                .getResourceAsStream("lion1.png")));
ImageView image2 = new ImageView(new Image(getClass()
                .getResourceAsStream("lion2.png")));
FlipView flip = new FlipView(image1, image2);

 5、效果圖:

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 毛片视频在线免费观看 | 88xx成人永久免费观看 | 国产88久久久国产精品免费二区 | 免费欧美精品 | 激情视频导航 | 黄网站免费在线看 | 国产在线精品一区二区三区 | 精品国产91久久久 | 成人午夜网址 | 欧美成人免费一级 | 黄色片网站免费观看 | 国产高潮好爽好大受不了了 | 欧美成网 | 伊人在线 | 天天操天天骑 | 成人免费自拍视频 | 88xx成人永久免费观看 | 久久亚洲国产精品 | 全免费午夜一级毛片真人 | 国产日韩免费观看 | 欧美伦交| 美女wc | 成人精品一区二区三区中文字幕 | 91精品观看91久久久久久国产 | 看免费毛片| 久草在线高清视频 | 九色中文| 99视频网址| 999久久国产 | 亚洲成人福利在线观看 | 欧美三级短视频 | 欧美特级一级毛片 | 手机黄色小视频 | 毛片118极品美女写真 | 天天透天天狠天天爱综合97 | 可以看逼的视频 | 国人精品视频在线观看 | 九一国产精品 | 精品偷拍久久 | 午夜久久久精品一区二区三区 | 色屁屁xxxxⅹ免费视频 |