2011-04-20 4 views
5

J'ai 10 fichiers XAML, chacun contenant une image d'une animation (ils ont été convertis à partir de SWF, donc il n'y a pas d'informations sur les images clés pour chaque objet). Chaque fichier XAML contient un canevas avec les différentes formes pour chaque image. Je souhaite créer un fichier XAML contenant les informations Canvas pour chaque image, puis utiliser XAML pour afficher chaque Canvas au moment approprié, de sorte que chaque image soit affichée les une après les autres. Est-ce un bon moyen d'y aller? Comment puis-je faire ceci? J'ai essayé dans Blend mais cela ne semble pas possible car mes objets sont différents sur chaque image (c'est-à-dire que je n'anime pas les propriétés de l'objet).Animation de flipbook simple en XAML

Je suis à la recherche d'une solution déclarative seulement.

Répondre

3

Vous pouvez essayer ce qui suit:

<Grid x:Name="FrameContainer"> 
    <Canvas x:Name="Canvas1" Visibility="Collapsed"><!-- shapes --></Canvas> 
    <Canvas x:Name="Canvas2" Visibility="Collapsed"><!-- shapes --></Canvas> 
    <Canvas x:Name="Canvas3" Visibility="Collapsed"><!-- shapes --></Canvas> 
    <Canvas x:Name="Canvas4" Visibility="Collapsed"><!-- shapes --></Canvas> 
    <Canvas x:Name="Canvas5" Visibility="Collapsed"><!-- shapes --></Canvas> 
    <Canvas x:Name="Canvas6" Visibility="Collapsed"><!-- shapes --></Canvas> 
    ... 
</Grid> 

Ensuite, faire un story-board qui permet de basculer la visibilité de chaque toile pour la faire ressembler à une animation image par image. J'ai eu un problème similaire dans un projet, et j'ai fait un contrôle personnalisé qui a une propriété de dépendance de cadre (int) qui est en charge de faire la dissimulation/l'affichage des éléments du modèle. Vous pouvez également animer la propriété Frame.

+0

Un grand merci - fonctionne bien. –

1

plus au message de Darkoleptiko, j'ai utilisé son approche ci-dessus avec un storyboard comme celui-ci:

<Window.Resources> 
    <Storyboard x:Key="Storyboard1"> 
     <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="Canvas1"> 
      <DiscreteObjectKeyFrame KeyTime="0" Value="{x:Static Visibility.Visible}"/> 
      <DiscreteObjectKeyFrame KeyTime="0:0:0.1" Value="{x:Static Visibility.Collapsed}"/> 
     </ObjectAnimationUsingKeyFrames> 
     <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="Canvas2"> 
      <DiscreteObjectKeyFrame KeyTime="0:0:0.1" Value="{x:Static Visibility.Visible}"/> 
      <DiscreteObjectKeyFrame KeyTime="0:0:0.2" Value="{x:Static Visibility.Collapsed}"/> 
     </ObjectAnimationUsingKeyFrames> 
     <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="Canvas3"> 
      <DiscreteObjectKeyFrame KeyTime="0:0:0.2" Value="{x:Static Visibility.Visible}"/> 
      <DiscreteObjectKeyFrame KeyTime="0:0:0.3" Value="{x:Static Visibility.Collapsed}"/> 
     </ObjectAnimationUsingKeyFrames> 

    </Storyboard> 
</Window.Resources>