Implementación de funciones:
1. Implementación de ImageLoader de la clase de carga de imágenes:
1) Utilice la cola de bloqueo para almacenar imágenes: BlockingQueue images = new ArrayBlockingQueue<>(2);
2) Utilice la imagen eof para indicar el final de la cola de imágenes: Imagen eof = new WritableImage(1, 1);
3) Lea la imagen especificada en un bucle. Dado que es una cola de bloqueo, el hilo se bloqueará automáticamente cuando la cola esté llena.
Copie el código de código de la siguiente manera:
ejecución pública vacía() {
identificación interna = 0;
intentar {
mientras (verdadero) {
Ruta de cadena = recursos[id];
InputStream es = getClass().getResourceAsStream(ruta);
si (es! = nulo) {
Imagen imagen = nueva imagen (es, ancho, alto, verdadero, verdadero);
si (!imagen.isError()) {
imágenes.put(imagen);
}
}
identificación++;
if (id >= recursos.longitud) {
identificación = 0;
}
}
} captura (Excepción e) {
} finalmente {
si (! cancelado) {
intentar {
imágenes.put(eof);
} captura (Excepción interrumpida e) {
}
}
}
}
2. Implementación de efectos especiales, tomando imágenes de conmutación de arco como ejemplo: Primero defina el efecto especial de cambio de Longitud de Transición: establezca el tiempo de cambio y la relación entre el número de radianes y el tiempo.
Copie el código de código de la siguiente manera:
clase LongitudTransición extiende Transición {
Arco arco;
pública LongitudTransición(Duración d, Arco arco) {
this.arc = arco;
setCycleDuration(d);
}
@Anular
interpolación de vacío protegido (doble d) {
arc.setLength(d * 360);
}
}
Luego configure el efecto de cascada de la imagen:
Copie el código de código de la siguiente manera:
grupo.setBlendMode(BlendMode.SRC_OVER);
next.setBlendMode(BlendMode.SRC_ATOP);
Y el efecto de desvanecimiento de la imagen anterior:
FadeTransition ft = new FadeTransition(Duración.segundos(0.2), máscara2);
Finalmente, ejecuta estos dos efectos especiales al mismo tiempo:
ParallelTransition pt = nueva ParallelTransition(lt, ft);
Representación: