تنفيذ الوظيفة:
1. تنفيذ فئة تحميل الصور ImageLoader:
1) استخدم قائمة انتظار الحظر لتخزين الصور: BlockingQueue image = new ArrayBlockingQueue<>(2);
2) استخدم الصورة eof للإشارة إلى نهاية قائمة انتظار الصور: Image eof = new WritableImage(1, 1);
3) اقرأ الصورة المحددة في حلقة نظرًا لأنها قائمة انتظار محظورة، فسيتم حظر الخيط تلقائيًا عندما تكون قائمة الانتظار ممتلئة.
انسخ رمز الكود كما يلي:
تشغيل الفراغ العام () {
معرف كثافة العمليات = 0؛
يحاول {
بينما (صحيح) {
مسار السلسلة = الموارد [المعرف]؛
InputStream هو = getClass().getResourceAsStream(path);
إذا (هو! = فارغ) {
صورة الصورة = صورة جديدة (هي، العرض، الارتفاع، صحيح، صحيح)؛
إذا (!image.isError()) {
image.put(image);
}
}
معرف++;
إذا (المعرف > = الموارد. الطول) {
المعرف = 0;
}
}
} قبض (الاستثناء ه) {
} أخيراً {
إذا (! ملغى) {
يحاول {
image.put(eof);
} قبض على (InterruptedException e) {
}
}
}
}
2. تنفيذ التأثير الخاص، مع أخذ صور تبديل القوس كمثال: حدد أولاً التأثير الخاص لتغيير انتقال الطول: اضبط وقت التغيير، والعلاقة بين عدد الراديان والوقت.
انسخ رمز الكود كما يلي:
يمتد طول الفصل الانتقالي للانتقال {
قوس قوس؛
public LengthTransition(Duration d, Arc arc) {
this.arc = arc;
setCycleDuration(d);
}
@تجاوز
استكمال الفراغ المحمي (مزدوج د) {
arc.setLength(d * 360);
}
}
ثم قم بتعيين تأثير الصورة المتتالية:
انسخ رمز الكود كما يلي:
group.setBlendMode(BlendMode.SRC_OVER);
next.setBlendMode(BlendMode.SRC_ATOP);
وتأثير التلاشي للصورة السابقة:
FadeTransition ft = new FadeTransition(Duration.thans(0.2),mask2);
وأخيرًا، قم بتنفيذ هذين التأثيرين الخاصين في نفس الوقت:
ParallelTransition pt = new ParallelTransition(lt, ft);
تقديم: