Exemplo n.º 1
0
        /// <summary>
        ///		Ejecuta una serie de acciones
        /// </summary>
        internal void Execute(TimeLineModel timeLine)
        {
            // Crea el storyboard de las animaciones
            if (sbStoryBoard == null)
            {
                // Crea el storyBoard
                sbStoryBoard = new Storyboard();
                // Asigna el evento de fin de animación
                sbStoryBoard.Completed += (sender, evntArgs) => AnimationEnd?.Invoke(this, EventArgs.Empty);
            }
            // Limpia el storyBoard
            sbStoryBoard.Children.Clear();
            // Asigna las propiedades de duración
            sbStoryBoard.BeginTime = TimeSpan.FromSeconds(timeLine.Parameters.Start);
            sbStoryBoard.Duration  = new Duration(TimeSpan.FromSeconds(timeLine.Parameters.Duration));
            // Recorre las acciones añadiéndolas al storyboard
            foreach (ActionBaseModel action in timeLine.Actions)
            {
                if (action != null)
                {
                    FrameworkElement control = PageView.GetPageControl(action.TargetKey);

                    // Ejecuta la acción
                    if (control != null)                             // && control.RenderTransform is TransformGroup)
                    {
                        if (action is SetVisibilityActionModel)
                        {
                            ExecuteVisibility(control, action as SetVisibilityActionModel);
                        }
                        else if (action is ResizeActionModel)
                        {
                            ExecuteResize(timeLine, control, action as ResizeActionModel);
                        }
                        else if (action is RotateActionModel)
                        {
                            ExecuteRotation(control, action as RotateActionModel);
                        }
                        else if (action is ZoomActionModel)
                        {
                            ExecuteZoom(control, action as ZoomActionModel);
                        }
                        else if (action is TranslateActionModel)
                        {
                            ExecuteTranslate(control, action as TranslateActionModel);
                        }
                        else if (action is PathActionModel)
                        {
                            ExecutePathAnimation(control, action as PathActionModel);
                        }
                        else if (action is SetZIndexModel)
                        {
                            ExecuteZIndexAnimation(control, action as SetZIndexModel);
                        }
                        else if (action is BrushViewBoxActionModel)
                        {
                            ExecuteViewBoxAnimation(control, action as BrushViewBoxActionModel);
                        }
                        else if (action is BrushRadialActionModel)
                        {
                            ExecuteBrushRadial(control, action as BrushRadialActionModel);
                        }
                        else if (action is BrushLinearActionModel)
                        {
                            ExecuteBrushLinear(control, action as BrushLinearActionModel);
                        }
                    }
                }
            }
            // Inicia la animación
            if (sbStoryBoard.Children.Count > 0)
            {
                // Lanza el evento de inicio de animación
                AnimationStart?.Invoke(this, EventArgs.Empty);
                // Arranca la animación
                sbStoryBoard.Begin();
            }
        }