2009-08-05 14 views
7

Tengo un montón de UserControls de WPF que activan internamente algunas animaciones en las interacciones del usuario. Todas las animaciones tienen repeatbehavior = "true" y todas las animaciones tienen la misma duración. Ahora me gustaría sincronizar todas esas animaciones en una línea de tiempo para que se desvanezcan y se sincronicen. No importa cuándo el usuario activó las animaciones. Por ejemplo, si todas las animaciones duran 3 segundos y el usuario activa la segunda animación 1,5 segundos después de la primera, aún quiero que las animaciones alcancen su máximo al mismo tiempo. Tal vez pueda definir una línea de tiempo global en un diccionario de recursos global que todas las animaciones que se definen en algún lugar en UserControls pueden usar? Preferiblemente solo XAML.¿Hay varios guiones gráficos o animaciones que comparten la misma línea de tiempo?

Respuesta

0

Simplemente agregue todas sus animaciones a un solo TimelineCollection. A continuación, agregue ese TimelineCollection a su Storyboard.Children. Entonces todos dispararán simultáneamente.

+0

COMO YO dijo que las animaciones están definidas en todos mis controles de usuario. No creo que haya una forma de agregar animaciones definidas en diferentes controles de usuario a la misma línea de tiempo. O tal vez hay? – bitbonk

0

XAML: imposible (por lo que yo sé)

código: CompositionTarget.Rendering

+1

¿Puedes dar más detalles sobre cómo utilizaría el evento ComposiciónResponder.Rendering con mis definiciones de animación? – bitbonk

+0

Tendrá que mover la animación al código. En el evento Rendering, compruebe qué animaciones se deberían ejecutar y actualice manualmente las propiedades correspondientes en función de una sola variable de temporizador. No es mucho trabajo, solo algunas líneas de SomeElement.SomeProperty = baseValue + rate * timePassed; – ima

Cuestiones relacionadas