خطوات التنفيذ: 1. تعريف كائن FlipView. يحتوي على الخصائص التالية:
انسخ رمز الكود كما يلي:
// المنظر الأمامي
العقدة العامة frontNode؛
// عرض عكسي
العقدة العامة backNode;
// ما إذا كان يجب الوجه
معكوسة منطقية = خطأ؛
// زاوية الوجه
DoubleProperty time = new SimpleDoubleProperty(Math.PI / 2);
// تأثير خاص للوجه الأمامي
PerspectiveTransform frontEffect = new PerspectiveTransform();
// تأثير خاص على الوجه العكسي
PerspectiveTransform backEffect = new PerspectiveTransform();
يقوم أسلوب الإنشاء بإرجاع المحتوى المراد عرضه:
انسخ رمز الكود كما يلي:
إنشاء الفراغ الخاص () {
time.addListener(new ChangeListener() {
@تجاوز
تم تغيير الفراغ العام (ObservableValue <؟ يمتد الرقم> arg0،
رقم arg1، رقم arg2) {
setPT(frontEffect, time.get());
setPT(backEffect, time.get());
}
});
anim.getKeyFrames().addAll(frame1,frame2);
backNode.visibleProperty().bind(
Bindings.when(time.lessThan(0)).then(true).otherwise(false));
frontNode.visibleProperty().bind(
Bindings.when(time.lessThan(0)).then(false).otherwise(true));
setPT(frontEffect, time.get());
setPT(backEffect, time.get());
frontNode.setEffect(frontEffect);
backNode.setEffect(backEffect);
getChildren().addAll(backNode, frontNode);
}
ما يجب ملاحظته في الكود أعلاه هو أنه مع تغير قيمة الوقت، ستتغير قيم frontEffect وbackEffect أيضًا. 2. يستخدم تنفيذ التأثير الخاص PerspectiveTransform طريقتي Math.sin() وMath.cos() لمحاكاة تحويل الزاوية ثلاثي الأبعاد. التنفيذ المحدد هو كما يلي:
انسخ رمز الكود كما يلي:
مجموعة باطلة خاصة PT (PerspectiveTransform pt، double t) {
عرض مزدوج = 200؛
ارتفاع مزدوج = 200؛
نصف القطر المزدوج = العرض / 2؛
ظهر مزدوج = الارتفاع / 10؛
pt.setUlx(radius - Math.sin(t) * radius);
pt.setUly(0 - Math.cos(t) * back);
pt.setUrx(radius + Math.sin(t) * radius);
pt.setUry(0 + Math.cos(t) * back);
pt.setLrx(radius + Math.sin(t) * radius);
pt.setLry(height - Math.cos(t) * back);
pt.setLlx(radius - Math.sin(t) * radius);
pt.setLly(height + Math.cos(t) * back);
}
3. يتغير تحويل الزاوية من 3.14/2 إلى -3.14/2 في ثانية واحدة.
انسخ رمز الكود كما يلي:
إطار المفتاح 1 = إطار المفتاح الجديد (Duration.ZERO، قيمة المفتاح الجديدة (الوقت،
Math.PI / 2، Interpolator.LINEAR))؛
KeyFrameframe2 = KeyFrame جديد (Duration.thanks(1)،
معالج الأحداث الجديد () {
@تجاوز
مقبض الفراغ العام (حدث ActionEvent) {
انقلبت = !flipped;
}
}, new KeyValue(time, -Math.PI / 2, Interpolator.LINEAR));
4. إنشاء كائنات FlipView: يمكن إنشاء كائنات FlipView بسهولة من خلال المُنشئ.
انسخ رمز الكود كما يلي:
ImageView image1 = ImageView الجديد (صورة جديدة (getClass ()
.getResourceAsStream("lion1.png")));
ImageView image2 = ImageView جديد (صورة جديدة (getClass ()
.getResourceAsStream("lion2.png")));
FlipView flip = new FlipView(image1, image2);
5. التقديم: