手机
当前位置:查字典教程网 >编程开发 >Java >javafx实现图片3D翻转效果方法实例
javafx实现图片3D翻转效果方法实例
摘要:实现步骤:1、定义FlipView对象。包含以下属性:复制代码代码如下://正面视图publicNodefrontNode;//反面视图pu...

实现步骤: 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、效果图:

javafx实现图片3D翻转效果方法实例1

【javafx实现图片3D翻转效果方法实例】相关文章:

java大数乘法的简单实现 浮点数乘法运算

java实现浮点数转人民币的小例子

java如何交换这两个变量的值方法介绍

Java字符串详解的实例介绍

简单学习Java抽象类要点及实例

Java 中实现随机无重复数字的方法

java字符串反转示例分享

使用ANT与YUI压缩js的实现方法

java多种幻灯片切换特效(经典)

jfinal添加jcaptcha验证码实现方法

精品推荐
分类导航