기능 구현:
1. 이미지 로딩 클래스 ImageLoader 구현:
1) 차단 대기열을 사용하여 이미지를 저장합니다. BlockingQueue 이미지 = new ArrayBlockingQueue<>(2);
2) 이미지 eof를 사용하여 이미지 대기열의 끝을 나타냅니다. Image eof = new WritableImage(1, 1);
3) 루프에서 지정된 그림을 읽으십시오. 차단 대기열이므로 대기열이 가득 차면 스레드가 자동으로 차단됩니다.
다음과 같이 코드 코드를 복사합니다 .
공개 무효 실행() {
정수 ID = 0;
노력하다 {
동안 (참) {
문자열 경로 = 리소스[id];
InputStream은 = getClass().getResourceAsStream(path);
if (is != null) {
이미지 이미지 = 새 이미지(is, width, height, true, true);
if (!image.isError()) {
이미지.put(이미지);
}
}
아이디++;
if (id >= resources.length) {
아이디 = 0;
}
}
} 잡기(예외 e) {
} 마지막으로 {
if (!cancelled) {
노력하다 {
이미지.put(eof);
} 잡기(InterruptedException e) {
}
}
}
}
2. 특수 효과 구현, 아크 전환 사진 예시: 먼저 LengthTransition 변경 특수 효과를 정의합니다. 변경 시간과 라디안 수와 시간 간의 관계를 설정합니다.
다음과 같이 코드 코드를 복사합니다 .
클래스 LengthTransition은 전환 {을 확장합니다.
아크 아크;
public LengthTransition(기간 d, 원호) {
this.arc = 호;
setCycleDuration(d);
}
@보수
protected void interpolate(double d) {
arc.setLength(d * 360);
}
}
그런 다음 그림 계단식 효과를 설정합니다.
다음과 같이 코드 코드를 복사합니다 .
group.setBlendMode(BlendMode.SRC_OVER);
next.setBlendMode(BlendMode.SRC_ATOP);
이전 그림의 페이드 아웃 효과는 다음과 같습니다.
FadeTransition ft = new FadeTransition(Duration.seconds(0.2), 마스크2);
마지막으로 다음 두 가지 특수 효과를 동시에 실행하십시오.
ParallelTransition pt = new ParallelTransition(lt, ft);
표현: