مشاركة عبر


نظرة عامة حول أحداث التوقيت

هذا الموضوع يصف كيفية استخدام أحداث التوقيت خمسة المتوفرة فى الكائنات Timeline و Clock.

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

لفهم هذا الموضوع يجب فهم كيفية انشاء واستخدام الحركات. لبدء الحركة ، راجع نظرة عامة حول الحركة.

توجد طرق متعددة لتحريك الخصائص في WPF:

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

ما المقصود بـ "ساعة" ؟

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

لماذا تُستخدم الأحداث ؟

باستثناء واحد (البحث عن المحاذاة مع اللحظة الأخيرة) كافة العمليات التفاعلية المرتبطة بالتوقيت تكون غير متزامنة. لا توجد طريقة لمعرفة تماماً متى ستنفذ. هذه يمكن أن تكون مشكلة عند وجود تعليمات برمجية أخرى تعتمد على عمليات التوقيت الخاصة بك. افترض أنك أردت ايقاف المخطط زمني الذى يقوم بتحريك مستطيل. بعد توقف المخطط الزمني, يمكنك تغيير لون المستطيل.

            myStoryboard.Stop(myRectangle)

            ' This statement might execute
            ' before the storyboard has stopped.
            myRectangle.Fill = Brushes.Blue
myStoryboard.Stop(myRectangle);

// This statement might execute
// before the storyboard has stopped.
myRectangle.Fill = Brushes.Blue;

في المثال السابق، قد يتم تنفيذ السطر الثاني من التعليمات البرمجية قبل علامات التوقف لوحة العمل. ذلك لأن الإيقاف عملية غير متزامنة. اخبار المخطط الزمني أو ساعة كى تقف يقوم بإنشاء "طلب ايقاف" من الفرز التي لم يتم معالجتها حتى توقيت التجزئة التالي للمشغّل.

لتنفيذ الأوامر بعد اكتمال مخطط زمني, استخدم أحداث التوقيت. في المثال التالي يتم استخدام معالج حدث لتغيير لون مستطيل بعد ايقاف تشغيل لوحة العمل.

            ' Register for the CurrentStateInvalidated timing event.
            AddHandler myStoryboard.CurrentStateInvalidated, AddressOf myStoryboard_CurrentStateInvalidated
// Register for the CurrentStateInvalidated timing event.
myStoryboard.CurrentStateInvalidated += new EventHandler(myStoryboard_CurrentStateInvalidated);

لمثال كامل أكثر ، راجع كيفية القيام بما يلي: تلقي إعلام عند تغيير حالة الساعة.

أحداث عام

توفر كلاً من الفئاتTimeline و Clock خمس أحداث توقيت. يسرد الجدول التالي هذه الأحداث والشروط التي تشغّل بها.

الحدث

تشغيل عملية تفاعلية

المشغّلات الأخرى

مكتمل

تخطي للقيام بتعبئة

اكتمال الساعة.

CurrentGlobalSpeedInvalidated

إيقافها مؤقتاً ، استئناف ، البحث ، تعيين نسبة السرعة ، انتقل إلى تعبئة ، توقف

تقوم الساعة بالتشغيل العكسى ، يبدأ تشغيل أو إيقاف.

CurrentStateInvalidated

بدء، تخطي لتعبئة ، توقف

تبدأ الساعة، تتوقف أو تقوم بتعبئة.

CurrentTimeInvalidated

بدء، بحث، تخطي لتعبئة ، توقف

تتقدم الساعة.

RemoveRequested

Remove

الدقات و دمج الأحداث

عند تحريك الكائنات في WPF فان مشغّل التوقيت هو الذى يدير الحركات. يقوم مشغل التوقيت بتعقب تقدم الوقت ويحسب حالة كل حركة. يقوم بالعديد من خطوات التقييم للعبور هذه في ثانية. تُعرف مسارات التقييم هذه بـ "علامات التجزئة."

بينما تحدث الدقات بشكل متكرر, فمن الممكن أن كثير من الأشياء تحدث بين الدقات. على سبيل المثال، قد يتم إيقاف وتشغيل مخطط زمني وإيقافه مرة أخرى، في هذه الحالة حالته الحالية سوف تكون قد تغيرت ثلاث مرات. نظرياً, يمكن أن يتم بدء الحدث عدة مرات في الدقة الواحدة; ومع ذلك، يدمج مشغّل التوقيت الأحداث، بحيث يمكن أن يبدأ تشغيل حدث واحد على الأكثر مرة واحدة في كل دقة.

التسجيل للأحداث

هناك طريقتان لتسجيل أحداث التوقيت: يمكنك التسجيل مع المخطط الزمني أو مع ساعة تم إنشاؤها من المخطط الزمني. التسجيل لحدث مباشرة مع ساعة يكون مباشراً على الرغم من أنه يمكن إجرائه فقط من التعليمات البرمجية. يمكنك التسجيل لأحداث مع المخطط زمني من العلامات أو التعليمات البرمجية. يصف القسم التالي كيف يتم التسجيل لأحداث ساعة مع مخطط زمني.

تسجيل أحداث الساعة مع مخطط زمني

على الرغم من أن الأحداث Completed ، CurrentGlobalSpeedInvalidated ، CurrentStateInvalidated ، CurrentTimeInvalidated ، و RemoveRequested الخاصة بالمخطط الزمنى تظهر مقترنة مع المخطط الزمني ، التسجيل لهذه الأحداث يقوم بالفعل باقران معالج أحداث مع Clock منشأ للمخطط الزمني.

عندما تقوم بالتسجيل للحصول على الحدث Completed على مخطط زمني, على سبيل المثال، فانك تقوم بالفعل بالطلب من النظام التسجيل للحدث Completed لكل ساعة تم إنشائها للمخطط الزمني. في التعليمات البرمجية "، يجب التسجيل لهذا الحدث قبل أن يتم انشاء Clock للمخطط الزمني; وإلا لن تتلقى الإعلام. يحدث هذا بشكل تلقائي في XAML; يقوم المحلل اللغوي تلقائياً بالتسجيل للحدث قبل أن يتم انشاء Clock.

راجع أيضًا:

المبادئ

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

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

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