javafx 이미지 3D 반전 효과 구현 방법 인 스 턴 스

2985 단어 그림.반전 효과
실현 절차: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 방법 은 표시 할 내용 을 되 돌려 줍 니 다:
4.567913 이상 코드 는 time 값 의 변화 에 따라 frontEffect 와 backEffect 의 값 도 변 경 됩 니 다.2.PerspectiveTransform 특수효과 의 실현 은 Math.sin()과 Math.cos()방법 으로 3D 각도 변환 을 모 의 했다.구체 적 인 실현 은 다음 과 같다

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);
    }
3.각도 변환 은 1 초 동안 3.14/2 에서-3.14/2 로 바 뀌 었 다

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);
    }
 4.FlipView 대상 의 생 성:구조 함 수 를 통 해 FlipView 대상 을 편리 하 게 만 들 수 있 습 니 다.

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));
 5.효과 도:

좋은 웹페이지 즐겨찾기