نظرة عامة حول الحركة المخصصة

يصف هذا الموضوع كيفية ووقت لتوسيع WPFرمزية نظام الرسوم المتحركةعن طريق إنشاء إطارات مفتاح مخصص ، فئات الحركة أو بواسطة استخدام رد الاتصال لكل إطار لتجاوز ذلك.

المتطلبات الأساسية

لفهم هذا الموضوع يجب أن تكون على دراية بانواع مختلفة من الحركات التي تم توفيرها من قبل WPF. لمزيد من المعلومات، راجع نظرة عامة لحركات من/إلى/حيث, نظرة عامة حول حركات إطار المفتاح , و نظرة عامة حول حركات المسار .

لأن الطبقات المتحركة ترث من Freezable الفئة ، يجب أن تكون على دراية مع Freezable الكائنات وكيفية ترث Freezable. لمزيد من المعلومات، راجع نظرة عامة حول الكائنات المجمدة.

توسيع نطاق نظام الرسوم المتحركة

هناك عدد من الطرق لتوسيع WPF نظام الحركة استناداً إلى مستوى الوظيفة المضمنة التي تريد استخدامه هناك ثلاث نقاط القابلية للتوسعة الأساسي في WPFرمز محرك الرسوم المتحركة

  • إنشاء مخصص كائن الإطار الرئيسي الذي يرث من واحدة من < نوع > KeyFrame فئات مثل DoubleKeyFrame. هذا النهج يستخدم معظم وظائف مضمنة لل WPF رمز محرك الرسوم المتحركة .

  • إنشاء فئة الحركة الخاصة بك عن طريق وراثة من AnimationTimeline أو أحد الفصول الدراسية AnimationBase < نوع >.

  • استخدام رد الاتصال لكل إطار لإنشاء الحركات على أساس لكل إطار. يعتبر هذا الأسلوب بشكل كامل تتجاوز الحركة ونظام توقيت .

يصف الجدول التالي بعض وحدات السيناريو لتوسيع النظام المتحرك.

عندما تريد ...

استخدم هذا الأسلوب

تخصيص استيفاء بين قيم من النوع الذي يحتوي على المطابق < نوع > AnimationUsingKeyFrames

إنشاء إطار مخصص الرئيسية. لمزيد من المعلومات، راجع إنشاء "إطار مفتاح مخصص"المقطع.

تخصيص استيفاء بين قيم من النوع الذي يحتوي على المطابق < نوع > AnimationUsingKeyFrames

إنشاء فئة حركة مخصصة التى ترث من < نوع > فئة AnimationBase يتوافق مع نوع الذي تريد تحريكه. لمزيد من المعلومات، راجع إنشاء "فئة حركة مخصصة" المقطع.

تبث من النوع الذي لا يوجد لديه WPF الحركة

استخدام ObjectAnimationUsingKeyFrames أو إنشاء فئة يرث من AnimationTimeline. لمزيد من المعلومات، راجع إنشاء "فئة حركة مخصصة" المقطع.

تحريك كائنات متعددة مع القيم التي يتم حسابها في كل إطار و استناداً إلى المجموعة الأخيرة من تفاعلات الكائن

استخدام لكل إطار رد الاتصال. لمزيد من المعلومات، راجع إنشاء استخدام لكل- استدعاء المقطع .

إنشاء إطار مخصص الرئيسية.

إنشاء فئة مخصصة الإطار الرئيسي هو أبسط وسيلة لتوسيع نظام الرسوم المتحركة. استخدام هذا الأسلوب عندما تريد طريقة مختلفة لاستيفاء الرسوم المتحركة مفتاح الإطار. كما هو موضح في نظرة عامة حول حركات إطار المفتاح ، حركة مفتاح إطار يستخدم كائنات إطار المفتاح لإنشاء به القيم. لكل كائن إطار بتنفيذ الوظائف ثلاث:

  • تعيّن قيمة هدف باستخدام به Value الخاصيه.

  • تعيّن وقت التي تلك القيمة يجب أن يتم الوصول إلى استخدام الخاص به KeyTime الخاصيه.

  • يحرف بين قيمة الإطار المفتاح السابق وقيمته الخاصة من خلال تنفيذ طريقة ادخال القيمة الأساسية .

إرشادات تطبيق

اشتقاق من < نوع > KeyFrame فئة مجردة و تنفيذ أسلوب InterpolateValueCore. الأسلوب InterpolateValueCore إرجاع القيمة الحالية للإطار مفتاح. يأخذ متغيرين: the القيمة of the السابق المفتاح إطار و a التقدم القيمة that ranges من 0 إلى 1. A التقدم of 0 indicates the المفتاح إطار has just started, و a القيمة of 1 indicates that the المفتاح إطار has just مكتمل و should return the القيمة specified بواسطة its Value خاصية.

لأن فئات KeyFrame *< نوع >*ترث Freezable الفئة ، يجب أيضاً تجاوز CreateInstanceCore الأساسية بإرجاع مثيل جديد من الفئه الخاصة بك . إذا كانت الفئة لا تستخدم خصائص تبعية لتخزين البيانات الخاصة به أو يتطلب تهيئة إضافية بعد إنشاء قد تحتاج إلى طرق إضافية; راجع نظرة عامة حول الكائنات المجمدة للحصول على مزيد من المعلومات.

بعد إنشاء الخاص بك المخصصة الحركة KeyFrame *< نوع >*يمكنك استخدامه مع < نوع > AnimationUsingKeyFrames لهذا النوع.

إنشاء فئة حركة مخصصة

إنشاء الحركة الخاصة بك لتمنحك المزيد من التحكم في كيفية تحريك كائن في. هناك طريقتان المستحسنة لإنشاء نوع الحركة الخاصة بك: يمكنك الحصول من AnimationTimeline فئة أو < نوع > قاعدة الرسوم المتحركة. اشتقاق من < نوع > حركة أو الفصول الدراسية الرسوم المتحركة باستخدام الأطار الرئيسية < نوع > لا ينصح.

اشتقاق من AnimationBase < نوع >

اشتقاق من فئة AnimationBase < نوع > هو أبسط طريقة لإنشاء نوع حركة جديد. استخدم هذا الأسلوب عندما تريد إنشاء حركة جديدة لنوع بالفعل على المطابق < نوع > AnimationBase فئة.

إرشادات تطبيق

اشتقاق من الفصل الدراسي حركة < نوع > و تنفيذ أسلوب GetCurrentValueCore. الأسلوب GetCurrentValueCore بإرجاع القيمة الحالية . يأخذ ثلاثة مدخلات: قيمة بداية مقترحة و قيمة النهائية مقترحة على AnimationClock ، الذي يمكنك استخدامه لتحديد تقدم حركة.

لأن فئات KeyFrame *< نوع >*ترث Freezable الفئة ، يجب أيضاً تجاوز CreateInstanceCore الأساسية بإرجاع مثيل جديد من الفئه الخاصة بك . إذا كانت الفئة لا تستخدم خصائص تبعية لتخزين البيانات الخاصة به أو يتطلب تهيئة إضافية بعد إنشاء قد تحتاج إلى طرق إضافية; راجع نظرة عامة حول الكائنات المجمدة للحصول على مزيد من المعلومات.

لمزيد من المعلومات، راجع وثائق أسلوب GetCurrentValueCore < نوع > فئة AnimationBase النوع الذي تريده للتحريك. على سبيل المثال، راجع نموذج حركة مخصصة

أساليب بديلة

إذا كنت تريد ببساطة لتغييرالطريقة التي تحرف الحركة الأخذ في الاعتبار اشتقاق من الفئات KeyFrame < نوع >. إطار المفتاح الذي يمكنك استخدامها مع المطابق < نوع > AnimationUsingKeyFrames يوفرها WPF.

اشتقاق من خط التوقيت الرسوم المتحركة

> تنبع من AnimationTimeline الفئه عندما تريد إنشاء الصور المتحركة لنوع ليس لديها بالفعل WPFالرسوم المتحركة ، أو إذا كنت تريد إنشاء الرسوم المتحركة التي لم يتم كتابة بقوة.

إرشادات تطبيق

اشتقاق من AnimationTimeline الفئة وتجاوز الأعضاء التاليين:

  • CreateInstanceCore – إذا كانت الفئة الجديدة الخرسانة "، يجب تجاوزCreateInstanceCore بإرجاع مثيل جديد من الفئه الخاصة بك .

  • GetCurrentValue – تجاوز هذا الأسلوب للعودة من قيمة حركة. يأخذ ثلاثة مدخلات: قيمة الأصل بشكل افتراضي ، قيمة الوجهة الافتراضية ، و AnimationClock. استخدام AnimationClock للحصول على الوقت الحالي أو التقدم حركة. يمكنك اختيار ما إذا كان سيتم استخدام أصل الافتراضي و قيم الوجهه.

  • IsDestinationDefault – تجاوز هذه الخاصية للإشارة ما إذا كان لديك الحركة يستخدم الافتراضي إلى القيمة المحددةGetCurrentValue أسلوب.

  • TargetPropertyType – تجاوز هذا للإشارة إلىType من الإخراج الخاص بك يعطي حركة.

إذا كانت الفئة لا تستخدم خصائص تبعية لتخزين البيانات الخاصة به أو يتطلب تهيئة إضافية بعد إنشاء قد تحتاج إلى طرق إضافية; راجع نظرة عامة حول الكائنات المجمدة للحصول على مزيد من المعلومات.

لواجهة الموصى به (المستخدمة من قبل WPF الحركات) هو لاستخدام توريث مستويين:

  1. إنشاء مجردة < نوع > AnimationBase فئة مشتقة من AnimationTimeline. يجب أن هذه الفئة تجاوز TargetPropertyType الأسلوب. يجب أيضاً تقديم ملخص جديد مجرده ، GetCurrentValueCore ، وتجاوز GetCurrentValue بحيث يتحقق من أنواع القيمة أصل الافتراضية المعلمات القيمة الوجهة الافتراضية ثم باستدعاء GetCurrentValueCore.

  2. إنشاء فئة أخرى التي ترث من جهاز جديد < نوع > فئة AnimationBase يتجاوز CreateInstanceCore أسلوب ، أسلوب GetCurrentValueCore التي يمكنك تقديمها و IsDestinationDefault الخاصية.

أساليب بديلة

إذا كنت تريد تحريك نوع لا يحتوي على الحركة From/صواب/By المطابق أو حركة الإطار مفتاح خذ بعين الاعتبار استخدام ObjectAnimationUsingKeyFrames. لأنه كتبته ضعيف ، ObjectAnimationUsingKeyFrames يمكنك تحريك أي نوع من قيمة. ويعتبر العيب إلى هذا الأسلوب هو ذلك ObjectAnimationUsingKeyFrames يعتمد فقط التداخل منفصلة .

استخدام لكل إطار رد الاتصال.

استخدم هذا الأسلوب عندما تحتاج الى تجاوز بالكامل WPF نظام الحركة. سيناريو واحد هذا الأسلوب هو الحركات physics ، حيث في كل حركة الخطوة اتجاه جديد أو موضع الكائنات المتحركة احتياجات ليمكن recomputed استناداً إلى المجموعة الأخيرة من تفاعلات الكائن.

إرشادات تطبيق

بعكس الطرق الأخرى الموضحة في هذه النظرة العامة, استخدام رد الاتصال في الإطار لا تحتاج إلى إنشاء الحركة أو مفتاح فئة الإطار.

بدلاً من ذلك، يمكنك تسجيل من أجل Rendering الحدث الكائن الذي يحتوي على الكائنات التي تريد تحريكها. يتم استدعاء هذا الأسلوب معالج الحدث مرة واحدة لكل إطار. كل مرة تقوم تلك WPF marshals البيانات الدائمة التقديم في شجرة المرئية عبر الى شجرة تركيب يتم استدعاء أسلوب معالج الأحداث الخاص بك.

في معالج "الأحداث" ، تنفيذ لديك مهم العمليات الحسابية الضرورية الخاصة بك الحركة التأثير وتعيين خصائص الكائنات الذي تريد تحريكه مع هذه القيم.

للحصول على وقت العرض التقديمي من الإطار الحالي EventArgs المقترنة معه يمكن أن يتم تحويل هذا الحدث كـ RenderingEventArgs ، التي توفر RenderingTime الخاصية التي يمكنك استخدامها للحصول على وقت التقديم الإطار الحالي.

لمزيد من المعلومات، راجع صفحة Rendering.

راجع أيضًا:

المرجع

AnimationTimeline

IKeyFrame

المبادئ

نظرة عامة حول أساليب تحريك الخاصية

نظرة عامة حول الكائنات المجمدة

نظرة عامة لحركات من/إلى/حيث

نظرة عامة حول حركات إطار المفتاح

نظرة عامة حول حركات المسار

نظرة عامة حول الحركة

نظرة عامة على نظام الحركة و التوقيت

موارد أخرى

نموذج حركة مخصصة