public override IEnumerable<Timeline> CreateAnimation(FrameworkElement element)
        {
            var list = new List<Timeline>();

            if (RotateDirection == RotateAnimationDirection.RotateUp)
            {
                list.Add(element.AnimatePointProperty(AnimationProperty.RenderTransformOrigin)
                    .AddDiscreteKeyFrame(0.0, new Point(0.0, 1.5)));
                list.Add(element.AnimateProperty(AnimationProperty.Rotation)
                    .AddEasingKeyFrame(0.0, 45)
                    .AddEasingKeyFrame(Duration, 0.0, new QuadraticEase()));
            }
            else
            {
                list.Add(element.AnimatePointProperty(AnimationProperty.RenderTransformOrigin)
                    .AddDiscreteKeyFrame(0.0, new Point(0.0, -0.5)));
                list.Add(element.AnimateProperty(AnimationProperty.Rotation)
                    .AddEasingKeyFrame(0.0, -45)
                    .AddEasingKeyFrame(Duration, 0.0, new QuadraticEase()));
            }
            list.Add(element.AnimateProperty(AnimationProperty.Opacity)
                .AddEasingKeyFrame(0.0, 0)
                .AddEasingKeyFrame(Duration/4, 1, new QuadraticEase())
                .AddEasingKeyFrame(Duration, 1));

            return list;
        }
        public override IEnumerable<Timeline> CreateAnimation(FrameworkElement element)
        {
            double startRotation = 0.0;
            double endRotation;

            if (StartRotation.HasValue)
                startRotation = StartRotation.Value;
            else
            {
                var compositeTransform = element.RenderTransform as CompositeTransform;
                if (compositeTransform != null)
                    startRotation = compositeTransform.Rotation;
            }
            if (EndRotation.HasValue)
                endRotation = EndRotation.Value;
            else
                endRotation = startRotation + 360.0;

            return new Timeline[]
            {
                element.AnimatePointProperty(AnimationProperty.RenderTransformOrigin)
                    .AddDiscreteKeyFrame(0.0, new Point(0.5, 0.5)),

                element.AnimateProperty(AnimationProperty.Rotation)
                    .AddEasingKeyFrame(0.0, startRotation)
                    .AddEasingKeyFrame(Duration, endRotation, Easing)
                    .AddDiscreteKeyFrame(Duration, startRotation),
            };
        }
 public override IEnumerable <Timeline> CreateAnimation(FrameworkElement element)
 {
     return(new Timeline[]
     {
         element.AnimateProperty(AnimationProperty.Opacity)
         .AddDiscreteKeyFrame(0.0, 1),
         element.AnimateProperty(AnimationProperty.Rotation)
         .AddDiscreteKeyFrame(0.0, 0),
         element.AnimateProperty(AnimationProperty.TranslateX)
         .AddDiscreteKeyFrame(0.0, 0),
         element.AnimateProperty(AnimationProperty.TranslateY)
         .AddDiscreteKeyFrame(0.0, 0),
         element.AnimateProperty(AnimationProperty.ScaleX)
         .AddDiscreteKeyFrame(0.0, 1),
         element.AnimateProperty(AnimationProperty.ScaleY)
         .AddDiscreteKeyFrame(0.0, 1),
         element.AnimateProperty(AnimationProperty.RotationX)
         .AddDiscreteKeyFrame(0.0, 0),
         element.AnimateProperty(AnimationProperty.RotationY)
         .AddDiscreteKeyFrame(0.0, 0),
         element.AnimateProperty(AnimationProperty.RotationZ)
         .AddDiscreteKeyFrame(0.0, 0),
         element.AnimatePointProperty(AnimationProperty.RenderTransformOrigin)
         .AddDiscreteKeyFrame(0.0, new Point(0.5, 0.5)),
     });
 }
Beispiel #4
0
        public override IEnumerable <Timeline> CreateAnimation(FrameworkElement element)
        {
            var transform = GetTransform(element);

            return(new Timeline[]
            {
                element.AnimatePointProperty(AnimationProperty.RenderTransformOrigin)
                .AddDiscreteKeyFrame(0.0, new Point(0, 1)),

                element.AnimateProperty(AnimationProperty.Opacity)
                .AddEasingKeyFrame(0.0, 0)
                .AddEasingKeyFrame(Duration, 1),

                element.AnimateProperty(AnimationProperty.TranslateX)
                .AddEasingKeyFrame(0.0, transform.TranslateX - 700)
                .AddEasingKeyFrame(Duration * 0.6, transform.TranslateX + 30, new QuadraticEase())
                .AddEasingKeyFrame(Duration * 0.8, transform.TranslateX),

                element.AnimateProperty(AnimationProperty.SkewX)
                .AddEasingKeyFrame(0.0, 30)
                .AddEasingKeyFrame(Duration * 0.6, -30)
                .AddEasingKeyFrame(Duration * 0.8, 15)
                .AddEasingKeyFrame(Duration, 0),
            });
        }
 public override IEnumerable<Timeline> CreateAnimation(FrameworkElement element)
 {
     return new Timeline[]
     {
         element.AnimateProperty(AnimationProperty.Opacity)
             .AddDiscreteKeyFrame(0.0, 1),
         element.AnimateProperty(AnimationProperty.Rotation)
             .AddDiscreteKeyFrame(0.0, 0),
         element.AnimateProperty(AnimationProperty.TranslateX)
             .AddDiscreteKeyFrame(0.0, 0),
         element.AnimateProperty(AnimationProperty.TranslateY)
             .AddDiscreteKeyFrame(0.0, 0),
         element.AnimateProperty(AnimationProperty.ScaleX)
             .AddDiscreteKeyFrame(0.0, 1),
         element.AnimateProperty(AnimationProperty.ScaleY)
             .AddDiscreteKeyFrame(0.0, 1),
         element.AnimateProperty(AnimationProperty.RotationX)
             .AddDiscreteKeyFrame(0.0, 0),
         element.AnimateProperty(AnimationProperty.RotationY)
             .AddDiscreteKeyFrame(0.0, 0),
         element.AnimateProperty(AnimationProperty.RotationZ)
             .AddDiscreteKeyFrame(0.0, 0),
         element.AnimatePointProperty(AnimationProperty.RenderTransformOrigin)
             .AddDiscreteKeyFrame(0.0, new Point(0.5, 0.5)),
     };
 }
        public override IEnumerable <Timeline> CreateAnimation(FrameworkElement element)
        {
#if NETFX_CORE || WINDOWS_81_PORTABLE
            var frame = Window.Current.Content as Frame;
            var width = (frame != null) ? frame.ActualWidth : 1024;
#elif WINDOWS_PHONE
            var frame = Application.Current.RootVisual as PhoneApplicationFrame;
            var width = (frame != null) ? frame.ActualWidth : 250;
#endif

            return(new Timeline[]
            {
                element.AnimatePointProperty(AnimationProperty.RenderTransformOrigin)
                .AddDiscreteKeyFrame(0.0, new Point(0.0, 0.5)),
                element.AnimateProperty(AnimationProperty.ScaleX)
                .AddEasingKeyFrame(0.0, 1.0)
                .AddEasingKeyFrame(Duration / 2, JumpUp ? 0.95 : 1.05)
                .AddEasingKeyFrame(Duration, 1, new CubicEase()),
                element.AnimateProperty(AnimationProperty.ScaleY)
                .AddEasingKeyFrame(0.0, 1.0)
                .AddEasingKeyFrame(Duration / 2, JumpUp ? 0.95 : 1.05)
                .AddEasingKeyFrame(Duration, 1, new CubicEase()),

                element.AnimateProperty(AnimationProperty.TranslateX)
                .AddEasingKeyFrame(0.0, width)
                .AddEasingKeyFrame(Duration, 0, new CubicEase()),
                element.AnimateProperty(AnimationProperty.Opacity)
                .AddEasingKeyFrame(0.0, 0)
                .AddEasingKeyFrame(Duration / 4, 1),
            });
        }
        public override IEnumerable<Timeline> CreateAnimation(FrameworkElement element)
        {
            var transform = GetTransform(element);

            return new Timeline[]
            {
                element.AnimatePointProperty(AnimationProperty.RenderTransformOrigin)
                    .AddDiscreteKeyFrame(0.0, new Point(0, 1)),

                element.AnimateProperty(AnimationProperty.Opacity)
                    .AddEasingKeyFrame(0.0, 0)
                    .AddEasingKeyFrame(Duration*0.6, 1),

                element.AnimateProperty(AnimationProperty.TranslateX)
                    .AddEasingKeyFrame(0.0, transform.TranslateX + 700)
                    .AddEasingKeyFrame(Duration*0.6, transform.TranslateX - 30, new QuadraticEase())
                    .AddEasingKeyFrame(Duration*0.8, transform.TranslateX),

                element.AnimateProperty(AnimationProperty.SkewX)
                    .AddEasingKeyFrame(0.0, -30)
                    .AddEasingKeyFrame(Duration*0.6, 30)
                    .AddEasingKeyFrame(Duration*0.8, -15)
                    .AddEasingKeyFrame(Duration, 0),
            };
        }
        public override IEnumerable<Timeline> CreateAnimation(FrameworkElement element)
        {
            var transform = GetTransform(element);

            if (Side == Side.Left)
                return new Timeline[]
                {
                    element.AnimatePointProperty(AnimationProperty.RenderTransformOrigin)
                        .AddDiscreteKeyFrame(0.0, new Point(0,0)),

                    element.AnimateProperty(AnimationProperty.Rotation)
                        .AddEasingKeyFrame(0.0, 0, new CubicEase {EasingMode = EasingMode.EaseInOut})
                        .AddEasingKeyFrame(Duration*0.2, 80, new CubicEase {EasingMode = EasingMode.EaseInOut})
                        .AddEasingKeyFrame(Duration*0.4, 60, new CubicEase {EasingMode = EasingMode.EaseInOut})
                        .AddEasingKeyFrame(Duration*0.6, 80, new CubicEase {EasingMode = EasingMode.EaseInOut})
                        .AddEasingKeyFrame(Duration*0.8, 60, new CubicEase {EasingMode = EasingMode.EaseInOut})
                        .AddEasingKeyFrame(Duration, 70),

                    element.AnimateProperty(AnimationProperty.TranslateY)
                        .AddEasingKeyFrame(Duration*0.7, transform.TranslateY)
                        .AddEasingKeyFrame(Duration, transform.TranslateY + Distance, new CubicEase { EasingMode = EasingMode.EaseIn}),

                    element.AnimateProperty(AnimationProperty.Opacity)
                        .AddEasingKeyFrame(0.0, 1)
                        .AddEasingKeyFrame(Duration*0.9, 1)
                        .AddEasingKeyFrame(Duration, 0),
                };
            return new Timeline[]
            {
                element.AnimatePointProperty(AnimationProperty.RenderTransformOrigin)
                    .AddDiscreteKeyFrame(0.0, new Point(1,0)),

                element.AnimateProperty(AnimationProperty.Rotation)
                    .AddEasingKeyFrame(0.0, 0, new CubicEase {EasingMode = EasingMode.EaseInOut})
                    .AddEasingKeyFrame(Duration*0.2, -80, new CubicEase {EasingMode = EasingMode.EaseInOut})
                    .AddEasingKeyFrame(Duration*0.4, -60, new CubicEase {EasingMode = EasingMode.EaseInOut})
                    .AddEasingKeyFrame(Duration*0.6, -80, new CubicEase {EasingMode = EasingMode.EaseInOut})
                    .AddEasingKeyFrame(Duration*0.8, -60, new CubicEase {EasingMode = EasingMode.EaseInOut})
                    .AddEasingKeyFrame(Duration,-70),

                element.AnimateProperty(AnimationProperty.TranslateY)
                    .AddEasingKeyFrame(Duration*0.7, transform.TranslateY)
                    .AddEasingKeyFrame(Duration, transform.TranslateY + Distance, new CubicEase { EasingMode = EasingMode.EaseIn}),

                element.AnimateProperty(AnimationProperty.Opacity)
                    .AddEasingKeyFrame(0.0, 1)
                    .AddEasingKeyFrame(Duration*0.9, 1)
                    .AddEasingKeyFrame(Duration, 0),
            };
        }
        public override IEnumerable <Timeline> CreateAnimation(FrameworkElement element)
        {
            var frame = Application.Current.RootVisual as Frame;

            if (frame == null)
            {
                return new Timeline[] {}
            }
            ;
            if (element == null)
            {
                return new Timeline[] {}
            }
            ;

            var ttv          = FromElement.TransformToVisual(Application.Current.RootVisual);
            var screenCoords = ttv.Transform(new Point(0, 0));
            var size         = FromElement.RenderSize;
            var fromScaleX   = size.Width / frame.ActualWidth;
            var fromScaleY   = size.Height / frame.ActualHeight;

            return(new Timeline[]
            {
                element.AnimatePointProperty(AnimationProperty.RenderTransformOrigin)
                .AddDiscreteKeyFrame(0.0, new Point(0.0, 0.0)),

                element.AnimateProperty(AnimationProperty.TranslateX)
                .AddEasingKeyFrame(0.0, screenCoords.X)
                .AddEasingKeyFrame(Duration, 0, new QuadraticEase()),
                element.AnimateProperty(AnimationProperty.TranslateY)
                .AddEasingKeyFrame(0.0, screenCoords.Y)
                .AddEasingKeyFrame(Duration, 0, new QuadraticEase()),

                element.AnimateProperty(AnimationProperty.ScaleX)
                .AddEasingKeyFrame(0.0, fromScaleX)
                .AddEasingKeyFrame(Duration, 1.0, new QuadraticEase()),
                element.AnimateProperty(AnimationProperty.ScaleY)
                .AddEasingKeyFrame(0.0, fromScaleY)
                .AddEasingKeyFrame(Duration, 1.0, new QuadraticEase()),

                element.AnimateProperty(AnimationProperty.Opacity)
                .AddEasingKeyFrame(0.0, 0)
                .AddEasingKeyFrame(Duration / 4, 1)
                .AddEasingKeyFrame(Duration, 1),
            });
        }
    }
#endif
}
        public override IEnumerable <Timeline> CreateAnimation(FrameworkElement element)
        {
            return(new Timeline[]
            {
                element.AnimatePointProperty(AnimationProperty.RenderTransformOrigin)
                .AddDiscreteKeyFrame(0.0, new Point(0.5, 0)),

                element.AnimateProperty(AnimationProperty.Rotation)
                .AddEasingKeyFrame(Duration * 0.2, Distance)
                .AddEasingKeyFrame(Duration * 0.4, -(Distance * 0.66))
                .AddEasingKeyFrame(Duration * 0.6, Distance * 0.33)
                .AddEasingKeyFrame(Duration * 0.8, -(Distance * 0.33))
                .AddEasingKeyFrame(Duration, 0)
            });
        }
 public override IEnumerable<Timeline> CreateAnimation(FrameworkElement element)
 {
     return new Timeline[]
     {
         element.AnimatePointProperty(AnimationProperty.RenderTransformOrigin)
             .AddDiscreteKeyFrame(0.0, new Point(HorizontalCentre, 0.5)),
         element.AnimateProperty(AnimationProperty.ScaleX)
             .AddEasingKeyFrame(0.0, 1)
             .AddEasingKeyFrame(Duration, 0.95), //, new CubicEase { EasingMode = EasingMode.EaseIn });
         element.AnimateProperty(AnimationProperty.ScaleY)
             .AddEasingKeyFrame(0.0, 1)
             .AddEasingKeyFrame(Duration, 0.95), //, new CubicEase { EasingMode = EasingMode.EaseIn });
         element.AnimateProperty(AnimationProperty.Opacity)
             .AddEasingKeyFrame(0.0, 1)
             .AddEasingKeyFrame(Duration/4, 1)
             .AddEasingKeyFrame(Duration, 0.7),
     };
 }
 public override IEnumerable <Timeline> CreateAnimation(FrameworkElement element)
 {
     return(new Timeline[]
     {
         element.AnimatePointProperty(AnimationProperty.RenderTransformOrigin)
         .AddDiscreteKeyFrame(0.0, new Point(HorizontalCentre, 0.5)),
         element.AnimateProperty(AnimationProperty.ScaleX)
         .AddEasingKeyFrame(0.0, 1)
         .AddEasingKeyFrame(Duration, 0.95),     //, new CubicEase { EasingMode = EasingMode.EaseIn });
         element.AnimateProperty(AnimationProperty.ScaleY)
         .AddEasingKeyFrame(0.0, 1)
         .AddEasingKeyFrame(Duration, 0.95),     //, new CubicEase { EasingMode = EasingMode.EaseIn });
         element.AnimateProperty(AnimationProperty.Opacity)
         .AddEasingKeyFrame(0.0, 1)
         .AddEasingKeyFrame(Duration / 4, 1)
         .AddEasingKeyFrame(Duration, 0.7),
     });
 }
        public override IEnumerable <Timeline> CreateAnimation(FrameworkElement element)
        {
            var transform = GetTransform(element);

            return(new Timeline[]
            {
                element.AnimatePointProperty(AnimationProperty.RenderTransformOrigin)
                .AddDiscreteKeyFrame(0.0, new Point(0.5, 1)),
                element.AnimateProperty(AnimationProperty.ScaleY)
                .AddEasingKeyFrame(0.0, 1)
                .AddEasingKeyFrame(Duration * 0.2, 0.6)
                .AddEasingKeyFrame(Duration * 0.4, 1.2)
                .AddEasingKeyFrame(Duration * 0.8, 1)
                .AddEasingKeyFrame(Duration * 1.0, 0.6)
                .AddEasingKeyFrame(Duration * 1.2, 1),
                element.AnimateProperty(AnimationProperty.TranslateY)
                .AddEasingKeyFrame(0.0, transform.TranslateY)
                .AddEasingKeyFrame(Duration * 0.2, transform.TranslateY)
                .AddEasingKeyFrame(Duration * 0.4, transform.TranslateY + Distance)
                .AddEasingKeyFrame(Duration * 0.6, transform.TranslateY + Distance)
                .AddEasingKeyFrame(Duration * 0.8, transform.TranslateY + (Distance / 2))
                .AddEasingKeyFrame(Duration * 1.0, transform.TranslateY),
            });
        }
        public override IEnumerable<Timeline> CreateAnimation(FrameworkElement element)
        {
            return new Timeline[]
            {
                element.AnimatePointProperty(AnimationProperty.RenderTransformOrigin)
                    .AddDiscreteKeyFrame(0.0, new Point(0.5, 0)),

                element.AnimateProperty(AnimationProperty.Rotation)
                    .AddEasingKeyFrame(Duration*0.2, Distance)
                    .AddEasingKeyFrame(Duration*0.4, -(Distance * 0.66))
                    .AddEasingKeyFrame(Duration*0.6, Distance * 0.33)
                    .AddEasingKeyFrame(Duration*0.8, -(Distance * 0.33))
                    .AddEasingKeyFrame(Duration, 0)
            };
        }
        public override IEnumerable<Timeline> CreateAnimation(FrameworkElement element)
        {
            double startRotation = 0.0;
            double endRotation;

            if (StartRotation.HasValue)
                startRotation = StartRotation.Value;
            else
            {
                var compositeTransform = element.RenderTransform as CompositeTransform;
                if (compositeTransform != null)
                    startRotation = compositeTransform.Rotation;
            }
            if (EndRotation.HasValue)
                endRotation = EndRotation.Value;
            else
                endRotation = startRotation + 360.0;

            return new Timeline[]
            {
                element.AnimatePointProperty(AnimationProperty.RenderTransformOrigin)
                    .AddDiscreteKeyFrame(0.0, new Point(0.5, 0.5)),

                element.AnimateProperty(AnimationProperty.Rotation)
                    .AddEasingKeyFrame(0.0, startRotation)
                    .AddEasingKeyFrame(Duration, endRotation, Easing)
                    .AddDiscreteKeyFrame(Duration, startRotation),
            };
        }
 public override IEnumerable<Timeline> CreateAnimation(FrameworkElement element)
 {
     var list = new List<Timeline>();
     if (RotateDirection == RotateAnimationDirection.RotateUp)
     {
         list.Add(element.AnimatePointProperty(AnimationProperty.RenderTransformOrigin)
             .AddDiscreteKeyFrame(0.0, new Point(0.0, 1.5)));
         list.Add(element.AnimateProperty(AnimationProperty.Rotation)
             .AddEasingKeyFrame(0.0, 0)
             .AddEasingKeyFrame(Duration, 45, new QuadraticEase {EasingMode = EasingMode.EaseOut}));
     }
     else
     {
         list.Add(element.AnimatePointProperty(AnimationProperty.RenderTransformOrigin)
             .AddDiscreteKeyFrame(0.0, new Point(0.0, -0.5)));
         list.Add(element.AnimateProperty(AnimationProperty.Rotation)
             .AddEasingKeyFrame(0.0, 0)
             .AddEasingKeyFrame(Duration, -45, new QuadraticEase {EasingMode = EasingMode.EaseOut}));
     }
     list.Add(element.AnimateProperty(AnimationProperty.Opacity)
         .AddEasingKeyFrame(0.0, 1)
         .AddEasingKeyFrame(Duration/2, 1)
         .AddEasingKeyFrame(Duration, 0));
     return list;
 }
        public override IEnumerable<Timeline> CreateAnimation(FrameworkElement element)
        {
            var frame = Application.Current.RootVisual as Frame;
            if (frame == null) return new Timeline[] {};
            if (element == null) return new Timeline[] {};

            var ttv = FromElement.TransformToVisual(Application.Current.RootVisual);
            var screenCoords = ttv.Transform(new Point(0, 0));
            var size = FromElement.RenderSize;
            var fromScaleX = size.Width/frame.ActualWidth;
            var fromScaleY = size.Height/frame.ActualHeight;

            return new Timeline[]
            {
                element.AnimatePointProperty(AnimationProperty.RenderTransformOrigin)
                    .AddDiscreteKeyFrame(0.0, new Point(0.0, 0.0)),

                element.AnimateProperty(AnimationProperty.TranslateX)
                    .AddEasingKeyFrame(0.0, screenCoords.X)
                    .AddEasingKeyFrame(Duration, 0, new QuadraticEase()),
                element.AnimateProperty(AnimationProperty.TranslateY)
                    .AddEasingKeyFrame(0.0, screenCoords.Y)
                    .AddEasingKeyFrame(Duration, 0, new QuadraticEase()),

                element.AnimateProperty(AnimationProperty.ScaleX)
                    .AddEasingKeyFrame(0.0, fromScaleX)
                    .AddEasingKeyFrame(Duration, 1.0, new QuadraticEase()),
                element.AnimateProperty(AnimationProperty.ScaleY)
                    .AddEasingKeyFrame(0.0, fromScaleY)
                    .AddEasingKeyFrame(Duration, 1.0, new QuadraticEase()),

                element.AnimateProperty(AnimationProperty.Opacity)
                    .AddEasingKeyFrame(0.0, 0)
                    .AddEasingKeyFrame(Duration/4, 1)
                    .AddEasingKeyFrame(Duration, 1),
            };
        }
        public override IEnumerable <Timeline> CreateAnimation(FrameworkElement element)
        {
            var transform = GetTransform(element);

            if (Side == Side.Left)
            {
                return new Timeline[]
                       {
                           element.AnimatePointProperty(AnimationProperty.RenderTransformOrigin)
                           .AddDiscreteKeyFrame(0.0, new Point(0, 0)),

                           element.AnimateProperty(AnimationProperty.Rotation)
                           .AddEasingKeyFrame(0.0, 0, new CubicEase {
                        EasingMode = EasingMode.EaseInOut
                    })
                           .AddEasingKeyFrame(Duration * 0.2, 80, new CubicEase {
                        EasingMode = EasingMode.EaseInOut
                    })
                           .AddEasingKeyFrame(Duration * 0.4, 60, new CubicEase {
                        EasingMode = EasingMode.EaseInOut
                    })
                           .AddEasingKeyFrame(Duration * 0.6, 80, new CubicEase {
                        EasingMode = EasingMode.EaseInOut
                    })
                           .AddEasingKeyFrame(Duration * 0.8, 60, new CubicEase {
                        EasingMode = EasingMode.EaseInOut
                    })
                           .AddEasingKeyFrame(Duration, 70),

                           element.AnimateProperty(AnimationProperty.TranslateY)
                           .AddEasingKeyFrame(Duration * 0.7, transform.TranslateY)
                           .AddEasingKeyFrame(Duration, transform.TranslateY + Distance, new CubicEase {
                        EasingMode = EasingMode.EaseIn
                    }),

                           element.AnimateProperty(AnimationProperty.Opacity)
                           .AddEasingKeyFrame(0.0, 1)
                           .AddEasingKeyFrame(Duration * 0.9, 1)
                           .AddEasingKeyFrame(Duration, 0),
                       }
            }
            ;
            return(new Timeline[]
            {
                element.AnimatePointProperty(AnimationProperty.RenderTransformOrigin)
                .AddDiscreteKeyFrame(0.0, new Point(1, 0)),

                element.AnimateProperty(AnimationProperty.Rotation)
                .AddEasingKeyFrame(0.0, 0, new CubicEase {
                    EasingMode = EasingMode.EaseInOut
                })
                .AddEasingKeyFrame(Duration * 0.2, -80, new CubicEase {
                    EasingMode = EasingMode.EaseInOut
                })
                .AddEasingKeyFrame(Duration * 0.4, -60, new CubicEase {
                    EasingMode = EasingMode.EaseInOut
                })
                .AddEasingKeyFrame(Duration * 0.6, -80, new CubicEase {
                    EasingMode = EasingMode.EaseInOut
                })
                .AddEasingKeyFrame(Duration * 0.8, -60, new CubicEase {
                    EasingMode = EasingMode.EaseInOut
                })
                .AddEasingKeyFrame(Duration, -70),

                element.AnimateProperty(AnimationProperty.TranslateY)
                .AddEasingKeyFrame(Duration * 0.7, transform.TranslateY)
                .AddEasingKeyFrame(Duration, transform.TranslateY + Distance, new CubicEase {
                    EasingMode = EasingMode.EaseIn
                }),

                element.AnimateProperty(AnimationProperty.Opacity)
                .AddEasingKeyFrame(0.0, 1)
                .AddEasingKeyFrame(Duration * 0.9, 1)
                .AddEasingKeyFrame(Duration, 0),
            });
        }
    }
        public override IEnumerable<Timeline> CreateAnimation(FrameworkElement element)
        {
            #if NETFX_CORE || WINDOWS_81_PORTABLE
            var frame = Window.Current.Content as Frame;
            var width = (frame != null) ? frame.ActualWidth : 1024;
            #elif WINDOWS_PHONE
            var frame = Application.Current.RootVisual as PhoneApplicationFrame;
            var width = (frame != null) ? frame.ActualWidth : 250;
            #endif

            return new Timeline[]
            {
                element.AnimatePointProperty(AnimationProperty.RenderTransformOrigin)
                    .AddDiscreteKeyFrame(0.0, new Point(0.0, 0.5)),
                element.AnimateProperty(AnimationProperty.ScaleX)
                    .AddEasingKeyFrame(0.0, 1.0)
                    .AddEasingKeyFrame(Duration/2, JumpUp ? 0.95 : 1.05)
                    .AddEasingKeyFrame(Duration, 1, new CubicEase()),
                element.AnimateProperty(AnimationProperty.ScaleY)
                    .AddEasingKeyFrame(0.0, 1.0)
                    .AddEasingKeyFrame(Duration/2, JumpUp ? 0.95 : 1.05)
                    .AddEasingKeyFrame(Duration, 1, new CubicEase()),

                element.AnimateProperty(AnimationProperty.TranslateX)
                    .AddEasingKeyFrame(0.0, width)
                    .AddEasingKeyFrame(Duration, 0, new CubicEase()),
                element.AnimateProperty(AnimationProperty.Opacity)
                    .AddEasingKeyFrame(0.0, 0)
                    .AddEasingKeyFrame(Duration/4, 1),
            };
        }
        public override IEnumerable<Timeline> CreateAnimation(FrameworkElement element)
        {
            var transform = GetTransform(element);

            return new Timeline[]
            {
                element.AnimatePointProperty(AnimationProperty.RenderTransformOrigin)
                    .AddDiscreteKeyFrame(0.0, new Point(0.5, 1)),
                element.AnimateProperty(AnimationProperty.ScaleY)
                    .AddEasingKeyFrame(0.0, 1)
                    .AddEasingKeyFrame(Duration*0.2, 0.6)
                    .AddEasingKeyFrame(Duration*0.4, 1.2)
                    .AddEasingKeyFrame(Duration*0.8, 1)
                    .AddEasingKeyFrame(Duration*1.0, 0.6)
                    .AddEasingKeyFrame(Duration*1.2, 1),
                element.AnimateProperty(AnimationProperty.TranslateY)
                    .AddEasingKeyFrame(0.0, transform.TranslateY)
                    .AddEasingKeyFrame(Duration*0.2, transform.TranslateY)
                    .AddEasingKeyFrame(Duration*0.4, transform.TranslateY + Distance)
                    .AddEasingKeyFrame(Duration*0.6, transform.TranslateY + Distance)
                    .AddEasingKeyFrame(Duration*0.8, transform.TranslateY + (Distance/2))
                    .AddEasingKeyFrame(Duration*1.0, transform.TranslateY),
            };
        }