Etapas de implementação: 1. Defina o objeto FlipView. Contém as seguintes propriedades:
Copie o código do código da seguinte forma:
//Vista frontal
Nó público frontNode;
//visão reversa
backNode do nó público;
//Se deve virar
booleano invertido = falso;
//inverte o ângulo
Tempo DoubleProperty = new SimpleDoubleProperty(Math.PI/2);
//Efeito especial de giro frontal
PerspectiveTransform frontEffect = new PerspectiveTransform();
//Efeito especial de inversão reversa
PerspectiveTransform backEffect = new PerspectiveTransform();
O método create retorna o conteúdo a ser exibido:
Copie o código do código da seguinte forma:
privado void criar() {
time.addListener(new ChangeListener() {
@Substituir
public void alterado(ObservableValue<? estende o número> arg0,
Número arg1, Número 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);
}
O que precisa ser observado no código acima é que conforme o valor do tempo muda, os valores de frontEffect e backEffect também mudam. 2. A implementação do efeito especial PerspectiveTransform usa os métodos Math.sin() e Math.cos() para simular a transformação do ângulo 3D. A implementação específica é a seguinte:
Copie o código do código da seguinte forma:
private void setPT(PerspectiveTransform pt, double t) {
largura dupla = 200;
altura dupla = 200;
raio duplo = largura/2;
costas duplas = altura / 10;
pt.setUlx(raio - Math.sin(t) * raio);
pt.setUly(0 - Math.cos(t) * voltar);
pt.setUrx(raio + Math.sin(t) * raio);
pt.setUry(0 + Math.cos(t) * voltar);
pt.setLrx(raio + Math.sin(t) * raio);
pt.setLry(altura - Math.cos(t) * voltar);
pt.setLlx(raio - Math.sin(t) * raio);
pt.setLly(altura + Math.cos(t) * voltar);
}
3. A transformação do ângulo muda de 3,14/2 para -3,14/2 em 1 segundo.
Copie o código do código da seguinte forma:
KeyFrame frame1 = new KeyFrame(Duration.ZERO, new KeyValue(tempo,
Math.PI/2, Interpolador.LINEAR));
KeyFrame frame2 = novo KeyFrame (Duration.seconds (1),
novo EventHandler() {
@Substituir
identificador de void público (evento ActionEvent) {
invertido = !invertido;
}
}, novo KeyValue(tempo, -Math.PI / 2, Interpolator.LINEAR));
4. Criação de objetos FlipView: Os objetos FlipView podem ser facilmente criados através do construtor.
Copie o código do código da seguinte forma:
ImageView imagem1 = new ImageView(new Image(getClass())
.getResourceAsStream("lion1.png")));
ImageView imagem2 = new ImageView(new Image(getClass()
.getResourceAsStream("lion2.png")));
FlipView flip = novo FlipView(imagem1, imagem2);
5. Renderização: