java

位置:IT落伍者 >> java >> 浏览文章

Java实现多种幻灯片切换特效(附源码)


发布日期:2020年12月27日
 
Java实现多种幻灯片切换特效(附源码)

功能说明 代码实现了多种幻灯片变换特效淡入淡出缓慢覆盖旋转覆盖等多种变换效果

功能实现

图片加载类ImageLoader实现

)用阻塞队列存储要图片BlockingQueue images = new ArrayBlockingQueue<>(

)用图片eof表示图片队列结束Image eof = new WritableImage(

)循环读取指定图片由于是阻塞队列所以当队列满的时候线程会自动阻塞

public void run() {

int id = ;

try {

while (true) {

String path = resources[id];

InputStream is = getClass()getResourceAsStream(path)

if (is != null) {

Image image = new Image(is width height true true)

if (!imageisError()) {

imagesput(image)

}

}

id++;

if (id >= resourceslength) {

id = ;

}

}

} catch (Exception e) {

} finally {

if (!cancelled) {

try {

imagesput(eof)

} catch (InterruptedException e) {

}

}

}

}

特效实现 以弧形切换图片为例 首先定义LengthTransition变化特效设置变化时间以及弧度数跟时间的变化关系

class LengthTransition extends Transition {

Arc arc;

public LengthTransition(Duration d Arc arc) {

thisarc = arc;

setCycleDuration(d)

}

@Override

protected void interpolate(double d) {

arcsetLength(d *

}

}

然后设置图片层叠效果

groupsetBlendMode(BlendModeSRC_OVER)

nextsetBlendMode(BlendModeSRC_ATOP)

以及之前那张图片的淡出特效

FadeTransition ft = new FadeTransition(Durationseconds( mask

最后同时执行这两个特效

ParallelTransition pt = new ParallelTransition(lt ft)

效果图

)thiswidth=;>

               

上一篇:Java程序实现压缩某目录

下一篇:java中的双缓沖技术