功能说明 代码实现了多种幻灯片变换特效 如淡入淡出缓慢覆盖旋转覆盖等多种变换效果
功能实现
图片加载类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=;>