سؤال

ما هي الطريقة الصحيحة لإيقاف لوحة العمل وإعادة تشغيلها من كود .net؟

أنا أحاول ...

myStory.Stop(this);

توقع إجراء مكالمة لاحقة إلى .Begin(this);ستتم إعادة التشغيل من الجدول الزمني عند الصفر، ولكن بدلاً من ذلك، تعود لوحة العمل إلى المكان الذي توقفت فيه.

لقد حاولت

.Remove(this);

وحاولت

.Seek(TimeSpan.Zero); 

والذي لم ينجح أيضًا.

المزيد من التفاصيل ...هنا عينة القصة المصورة الخاصة بي.

<Storyboard x:Key="overlay">
    <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="textone" Storyboard.TargetProperty="(UIElement.Opacity)">
        <SplineDoubleKeyFrame KeyTime="00:00:03.0" Value="0"/>
        <SplineDoubleKeyFrame KeyTime="00:00:03.0" Value="1"/>
        <SplineDoubleKeyFrame KeyTime="00:00:06.0" Value="1"/>
        <SplineDoubleKeyFrame KeyTime="00:00:06.0" Value="0"/>
    </DoubleAnimationUsingKeyFrames>
    <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="texttwo" Storyboard.TargetProperty="(UIElement.Opacity)">
        <SplineDoubleKeyFrame KeyTime="00:00:07.0" Value="0"/>
        <SplineDoubleKeyFrame KeyTime="00:00:07.0" Value="1"/>
        <SplineDoubleKeyFrame KeyTime="00:00:10.0" Value="1"/>
        <SplineDoubleKeyFrame KeyTime="00:00:10.0" Value="0"/>
    </DoubleAnimationUsingKeyFrames>
</Storyboard>

لذلك يتم تشغيل النص الموجود في textone، وإذا قمت بإغلاق الشاشة، والعودة إلى الشاشة بسرعة، فإن texttwo، يتم تشغيله فعليًا على لوحة القصة التي بدأت حديثًا.لذا فإن لوحة القصة الأصلية (من الشاشة الأولى) لا تزال موجودة وتلعب، على الرغم من أنني قمت بإزالتها وإيقافها.

هل كانت مفيدة؟

المحلول

ماذا عن استخدام Storyboard.Seek(TimeSpan.Zero)؟على غرار البحث في الدفق، يجب أن يعيدك هذا إلى بداية الرسوم المتحركة.

لقد علقت بأنه يجب عليك أيضًا التأكد من تعيين خاصية IsControllable على القيمة true.ضع ذلك في الاعتبار!

Storyboard.Seek الطريقة

نصائح أخرى

وأنت في حاجة للقيام myStory.Remove (هذا) قبل استدعاء myStory.Begin (هذا) لأنها قد تبدأ من جديد من نقطة الصفر. وذلك لأن الدعوة القصة المصورة :: وقف يتوقف فقط الساعات الرسوم المتحركة، لكنه يترك لهم سليمة. دعوة لاحقة لبيغن، سوف تعمل كمجرد الذاتية. أوافق على أن هذا هو متوقع إلى حد ما، ولكن إذا كنت تقرأ وثائق <وأ href = "http://msdn.microsoft.com/en-us/library/system.windows.media.animation.clockcontroller.stop.aspx" يختلط = "نوفولو noreferrer"> ClockController :: وقف ، سترى ما يلي في تصريحات:

<اقتباس فقرة>   

وهذا الأسلوب تغيير الهدف على مدار الساعة ل   CurrentState إلى توقف.

     

ويمكن إعادة ساعة توقف من قبل   باستخدام بيغن، التماس، أو   طريقة SeekAlignedToLastTick.

وعذرا سكوت، وكنت لا تولي اهتماما. هل حاولت تعيين FillBehavior على القصة المصورة. تعيين FillBehavior لوقف يعيد للرسوم المتحركة. لا يدري لماذا توقف لا يفعل ذلك على الرغم من ...

<Storyboard x:Key="overlay">
<DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="textone" Storyboard.TargetProperty="(UIElement.Opacity)">
    <SplineDoubleKeyFrame KeyTime="00:00:03.0" Value="0"/>
    <SplineDoubleKeyFrame KeyTime="00:00:03.0" Value="1"/>
    <SplineDoubleKeyFrame KeyTime="00:00:06.0" Value="1"/>
    <SplineDoubleKeyFrame KeyTime="00:00:06.0" Value="0"/>
</DoubleAnimationUsingKeyFrames>
<DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="texttwo" Storyboard.TargetProperty="(UIElement.Opacity)">
    <SplineDoubleKeyFrame KeyTime="00:00:07.0" Value="0"/>
    <SplineDoubleKeyFrame KeyTime="00:00:07.0" Value="1"/>
    <SplineDoubleKeyFrame KeyTime="00:00:10.0" Value="1"/>
    <SplineDoubleKeyFrame KeyTime="00:00:10.0" Value="0"/>
</DoubleAnimationUsingKeyFrames>

 using System.Windows.Media.Animation;

وبعد ذلك خلق القصة المصورة الجديدة

 Storyboard storyboard_name = (Storyboard)(FindResource("overlay")); 
 storyboard_name.Begin();

ولوحة العمل "storyboard_name" ستبدأ.

وإذا كنت ترغب في وقف storyboard.please محاولة من هذا القبيل

storyboard_name.Stop();

وإذا كنت ترغب في إزالة storyboard.please محاولة من هذا القبيل

storyboard_name.Remove();

وتفاصيل أخرى يمكن أن يكون:

وthis.MyAnimation.FillBehavior = FillBehavior.Stop؛

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top