コード例 #1
0
        public static void PerformTranslateIn(DependencyObject dependencyObject, TranslateAxes translateAxis,
                                              double defaultValue, double startingValue, double endingValue,
                                              double duration, double staggerDelay = 0)
        {
            // create default easing
            CubicEase easeIn = new CubicEase()
            {
                EasingMode = EasingMode.EaseIn
            };

            CubicEase easeOut = new CubicEase()
            {
                EasingMode = EasingMode.EaseOut
            };

            PerformTranslateIn(dependencyObject, translateAxis, defaultValue, startingValue, endingValue, easeIn, easeOut, duration, staggerDelay);
        }
コード例 #2
0
        public static void PerformTranslateIn(DependencyObject dependencyObject, TranslateAxes translateAxis,
                                              double defaultValue, double startingValue, double endingValue,
                                              EasingFunctionBase easingFunctionIn, EasingFunctionBase easingFunctionOut,
                                              double duration, double staggerDelay = 0)
        {
            Storyboard storyboard = null;

            if (null != dependencyObject)
            {
                storyboard = CreateTranslateAnimation(dependencyObject, translateAxis,
                                                      defaultValue, startingValue, endingValue,
                                                      easingFunctionIn, easingFunctionOut,
                                                      duration, staggerDelay,
                                                      false, false, new RepeatBehavior(1d));

                storyboard.Begin();
            }
        }
コード例 #3
0
 public static void SetTranslateAxis(UIElement element, TranslateAxes value)
 {
     element.SetValue(TranslateAxisProperty, value);
 }
コード例 #4
0
        public static void PerformPageEntranceAnimation(Page page)
        {
            if (null != page)
            {
                // stagger delay counter
                double staggerDelay = 0;

                // create default easing
                CubicEase easeIn = new CubicEase()
                {
                    EasingMode = EasingMode.EaseIn
                };
                CubicEase easeOut = new CubicEase()
                {
                    EasingMode = EasingMode.EaseOut
                };

                // storyboards
                List <Storyboard> storyboards = new List <Storyboard>();

                // get all the objects to animate
                List <UIElement> animatables = GetAllAnimatableChildren(page.Content);

                // loop through them
                foreach (UIElement animatable in animatables)
                {
                    // get the animation tag properties
                    AnimationTypes      animationType      = AnimationTag.GetAnimationType(animatable);
                    TranslateAxes       translateAxis      = AnimationTag.GetTranslateAxis(animatable);
                    TranslateDirections translateDirection = AnimationTag.GetTranslateDirection(animatable);

                    // create the animations
                    switch (animationType)
                    {
                    case AnimationTypes.Background:
                        storyboards.Add(CreateEasingAnimation(animatable, "Opacity", 0.0, 0.0, 1.0,
                                                              DEFAULT_DURATION, staggerDelay,
                                                              false, false, new RepeatBehavior(1d)));
                        break;

                    case AnimationTypes.Standard:
                        storyboards.Add(CreateEasingAnimation(animatable, "Opacity", 0.0, 0.0, 1.0,
                                                              DEFAULT_DURATION, staggerDelay,
                                                              false, false, new RepeatBehavior(1d)));

                        double startValue1 = ((TranslateDirections.FromTop == translateDirection) ||
                                              (TranslateDirections.FromLeft == translateDirection))
                                                 ? -1 * DEFAULT_TRANSLATE_OFFSET : DEFAULT_TRANSLATE_OFFSET;

                        storyboards.Add(CreateTranslateAnimation(animatable, translateAxis, startValue1, startValue1, 0,
                                                                 easeIn, easeOut, DEFAULT_DURATION, staggerDelay,
                                                                 false, false, new RepeatBehavior(1d)));
                        break;

                    case AnimationTypes.Hero:
                        storyboards.Add(CreateEasingAnimation(animatable, "Opacity", 0.0, 0.0, 1.0,
                                                              DEFAULT_DURATION, staggerDelay,
                                                              false, false, new RepeatBehavior(1d)));

                        double startValue2 = ((TranslateDirections.FromTop == translateDirection) ||
                                              (TranslateDirections.FromLeft == translateDirection))
                                                 ? -1 * DEFAULT_TRANSLATE_HERO_OFFSET : DEFAULT_TRANSLATE_HERO_OFFSET;

                        storyboards.Add(CreateTranslateAnimation(animatable, translateAxis, startValue2, startValue2, 0,
                                                                 easeIn, easeOut, DEFAULT_DURATION, staggerDelay,
                                                                 false, false, new RepeatBehavior(1d)));
                        break;

                    case AnimationTypes.Radiate:
                        storyboards.Add(CreateEasingAnimation(animatable, "Opacity", 0.0, 0.0, 1.0,
                                                              DEFAULT_DURATION * 2, staggerDelay,
                                                              false, false, new RepeatBehavior(1d)));
                        staggerDelay += DEFAULT_DURATION * 2;

                        //storyboards.Add(CreateEasingAnimation(animatable, "Opacity", 0.5, 0.5, 1.0,
                        //            DEFAULT_DURATION * 2, staggerDelay,
                        //            false, false, new RepeatBehavior(1d)));

                        //staggerDelay += DEFAULT_DURATION;

                        break;

                    case AnimationTypes.None:
                    default:
                        break;
                    }

                    // increment stagger delay
                    staggerDelay += 2 * (DEFAULT_DURATION / 3);
                }

                // loop through the animations and start them
                foreach (Storyboard storyboard in storyboards)
                {
                    storyboard.Begin();
                }
            }
        }
コード例 #5
0
        public static Storyboard CreateTranslateAnimation(DependencyObject dependencyObject, TranslateAxes axis,
                                                          double defaultValue, double startValue, double endValue,
                                                          EasingFunctionBase easingFunctionIn, EasingFunctionBase easingFunctionOut,
                                                          double duration, double staggerDelay,
                                                          bool autoReverse, bool repeatForever, RepeatBehavior repeatBehavior)
        {
            if (null == dependencyObject)
            {
                return(null);
            }

            // total duration
            double totalDuration = duration + staggerDelay;

            // create the storyboard
            Storyboard storyboard = new Storyboard()
            {
                Duration       = TimeSpan.FromMilliseconds(totalDuration),
                AutoReverse    = autoReverse,
                RepeatBehavior = (repeatForever) ? RepeatBehavior.Forever : repeatBehavior
            };

            // need a translate transform to animate
            TranslateTransform translateTransform = FindOrCreateTranslateTransform(dependencyObject);

            if (null != translateTransform)
            {
                // set the default value for the transform
                translateTransform.X = (TranslateAxes.Horizontal == axis) ? defaultValue : 0;
                translateTransform.Y = (TranslateAxes.Vertical == axis) ? defaultValue : 0;

                // create default easing
                CubicEase easeIn = new CubicEase()
                {
                    EasingMode = EasingMode.EaseIn
                };

                CubicEase easeOut = new CubicEase()
                {
                    EasingMode = EasingMode.EaseOut
                };

                string propertyName = (TranslateAxes.Horizontal == axis) ? "X" : "Y";

                DoubleAnimationUsingKeyFrames daKeyFrames = CreateEasingKeyFrames(translateTransform, propertyName,
                                                                                  defaultValue, startValue, endValue,
                                                                                  easeIn, easeOut, duration, staggerDelay);

                storyboard.Children.Add(daKeyFrames);
                Storyboard.SetTarget(daKeyFrames, translateTransform);
                Storyboard.SetTargetProperty(daKeyFrames, propertyName);
            }

            return(storyboard);
        }