Partilhar via


RepeatBehavior Estrutura

Definição

Descreve como uma Linha do Tempo repete sua duração simples.

/// [Windows.Foundation.Metadata.ContractVersion(Microsoft.UI.Xaml.WinUIContract, 65536)]
struct RepeatBehavior
[Windows.Foundation.Metadata.ContractVersion(typeof(Microsoft.UI.Xaml.WinUIContract), 65536)]
public struct RepeatBehavior
Public Structure RepeatBehavior
<object property="iterationsx"/>
- or -
<object property="[days.]hours:minutes:seconds[.fractionalSeconds]"/>
- or -
<object property="Forever"/>
Herança
RepeatBehavior
Atributos

Exemplos

Este exemplo mostra várias maneiras diferentes de definir o RepeatBehavior de uma animação e como essas configurações podem afetar sua animação.

<StackPanel Margin="20">
    <StackPanel.Resources>
        <Storyboard x:Name="myStoryboard">

            <!-- Create an animation that repeats indefinitely. -->
            <DoubleAnimation 
              Storyboard.TargetName="ForeverRepeatingTransform" 
              Storyboard.TargetProperty="ScaleX" 
              From="1" To="5" Duration="0:0:2" RepeatBehavior="Forever" />

            <!-- Create an animation that repeats for four seconds. Because
                 the animation is 2 seconds each, you get two repeats. -->
            <DoubleAnimation 
              Storyboard.TargetName="FourSecondsRepeatingTransform" 
              Storyboard.TargetProperty="ScaleX"
              From="1" To="5" Duration="0:0:2" RepeatBehavior="0:0:4" 
              EnableDependentAnimation="True"/>

            <!-- Create an animation that repeats twice. -->
            <DoubleAnimation 
              Storyboard.TargetName="TwiceRepeatingTransform" 
              Storyboard.TargetProperty="ScaleX" 
              From="1" To="5" Duration="0:0:2" RepeatBehavior="2x" 
              EnableDependentAnimation="True"/>

            <!-- Create an animation that repeats 0.5 times. The resulting animation
                 plays for one second, half of its Duration. It animates from 50 to 150. -->
            <DoubleAnimation 
              Storyboard.TargetName="HalfRepeatingTransform" 
              Storyboard.TargetProperty="ScaleX" 
              From="1" To="5" Duration="0:0:2" RepeatBehavior="0.5x" 
              EnableDependentAnimation="True"/>

            <!-- Create an animation that repeats for one second. The resulting animation
                 plays for one second, half of its Duration. It animates from 50 to 150. -->
            <DoubleAnimation 
              Storyboard.TargetName="OneSecondRepeatingTransform" 
              Storyboard.TargetProperty="ScaleX" 
              From="1" To="5" Duration="0:0:2" RepeatBehavior="0:0:1" 
              EnableDependentAnimation="True"/>
        </Storyboard>
    </StackPanel.Resources>

    <!-- Create several rectangles to animate. -->
    <Rectangle Fill="Red" Width="50" Height="20" >
        <Rectangle.RenderTransform>
            <ScaleTransform x:Name="ForeverRepeatingTransform" />
        </Rectangle.RenderTransform>
   </Rectangle>
   <Rectangle Fill="Blue" Width="50" Height="20" >
       <Rectangle.RenderTransform>
           <ScaleTransform x:Name="FourSecondsRepeatingTransform" />
       </Rectangle.RenderTransform>
   </Rectangle>
   <Rectangle Fill="Yellow" Width="50" Height="20" >
       <Rectangle.RenderTransform>
           <ScaleTransform x:Name="TwiceRepeatingTransform" />
       </Rectangle.RenderTransform>
   </Rectangle>
   <Rectangle Fill="Green" Width="50" Height="20" >
       <Rectangle.RenderTransform>
           <ScaleTransform x:Name="HalfRepeatingTransform" />
       </Rectangle.RenderTransform>
   </Rectangle>
   <Rectangle Fill="Orange" Width="50" Height="20" >
       <Rectangle.RenderTransform>
           <ScaleTransform x:Name="OneSecondRepeatingTransform" />
       </Rectangle.RenderTransform>
   </Rectangle>

        <!-- Create buttons to restart and stop the animations. -->
   <Button Margin="10" Content="Restart Animation" Click="Start_Animation" />


</StackPanel>
private void Start_Animation(object sender, RoutedEventArgs e)
{
    myStoryboard.Begin();
}

Este exemplo mostra como você pode definir o RepeatBehavior no código. As animações são as mesmas do exemplo anterior, mas têm o atributo x:Name definido e RepeatBehavior é definido no método em Start_Animation vez de em XAML.

<Storyboard x:Name="myStoryboard">

    <!-- Create an animation that repeats indefinitely. -->
    <DoubleAnimation x:Name="ForeverRepeatingAnimation"
                     Storyboard.TargetName="ForeverRepeatingTransform" 
                     Storyboard.TargetProperty="ScaleX" 
                     From="1" To="5" Duration="0:0:2"  />

    <!-- Create an animation that repeats for four seconds. Because 
        the animation is 2 seconds each, you get two repeats. -->
    <DoubleAnimation x:Name="FourSecondsRepeatingAnimation"
                     Storyboard.TargetName="FourSecondsRepeatingTransform" 
                     Storyboard.TargetProperty="ScaleX"
                     From="1" To="5" Duration="0:0:2"  
                     EnableDependentAnimation="True"/>

    <!-- Create an animation that repeats twice. -->
    <DoubleAnimation x:Name="TwiceRepeatingAnimation"
                     Storyboard.TargetName="TwiceRepeatingTransform" 
                     Storyboard.TargetProperty="ScaleX" 
                     From="1" To="5" Duration="0:0:2"  
                     EnableDependentAnimation="True"/>
</Storyboard>
private void Start_Animation(object sender, RoutedEventArgs e)
{
    // Set RepeatBehavior of Forever.
    var repeatBehavior = new RepeatBehavior();
    repeatBehavior.Type = RepeatBehaviorType.Forever;
    ForeverRepeatingAnimation.RepeatBehavior = repeatBehavior;

    // Set RepeatBehavior with Duration of 4 seconds.
    FourSecondsRepeatingAnimation.RepeatBehavior = new RepeatBehavior(new TimeSpan(0, 0, 4));

    // Set RepeatBehavior with Count of 2.
    TwiceRepeatingAnimation.RepeatBehavior = new RepeatBehavior(2);

    myStoryboard.Begin();
}

Comentários

Há três tipos de comportamentos RepeatBehavior:

  • Intervalo de tempo: especifica a duração ativa de uma Linha do Tempo, possivelmente repetindo a animação se Timeline.Duration for menor. Por exemplo, uma Linha do Tempo com um valor timeline.duration simples de 1 segundo e um valor RepeatBehavior.Duration de 2,5 segundos será executado por 2,5 iterações e 2,5 segundos.
  • Contagem de iteração: especifica o número de vezes que a duração simples de uma Linha do Tempo é reproduzida. A contagem de iteração padrão é 1,0 e isso significa que a Linha do Tempo está ativa por exatamente uma de suas durações simples. Uma contagem de 0,5 especifica que o linha do tempo está ativo pela metade de sua duração simples, enquanto uma contagem de 2 especifica que o linha do tempo repete sua duração simples duas vezes. Para obter mais informações, consulte Contagem.
  • Para sempre: a Linha do Tempo se repete indefinidamente.

Um RepeatBehavior deve conter apenas valores diferentes de zero para uma de suas duas propriedades de dados possíveis Count ou Duration. Se RepeatBehaviorType for Count, o membro Count de um RepeatBehavior será o valor relevante. Se RepeatBehaviorType for Duration, o membro Duration de um RepeatBehavior será o valor relevante. Se RepeatBehaviorType for Forever, nem Count nem Duration serão relevantes; o comportamento de repetição é tal que a animação de destino será repetida continuamente sem um limite.

Observações sobre a sintaxe XAML

Você não pode declarar um RepeatBehavior como um objeto compartilhável em um ResourceDictionary.

Projeção e membros de RepeatBehavior

Se você estiver usando uma linguagem Microsoft .NET (C# ou Microsoft Visual Basic), RepeatBehavior terá membros que não são de dados disponíveis e seus membros de dados Count, Duration e Type serão expostos como propriedades de leitura/gravação, não campos.

Se você estiver usando extensões de componente do Visual C++ (C++/CX), RepeatBehavior terá membros que não são de dados disponíveis e seus membros de dados Count, Duration e Type serão expostos como propriedades somente leitura, não campos.

Se você estiver programando com C++ usando a WRL (Biblioteca de Modelos de Windows Runtime), somente os campos de membro de dados Count, Duration e Type existirão como membros de RepeatBehavior e você não poderá usar os métodos ou propriedades do utilitário listados na tabela de membros. O código WRL pode acessar métodos utilitários semelhantes que existem na classe RepeatBehaviorHelper .

Campos

Count

O número de vezes que uma Linha do Tempo deve se repetir.

Duration

O período de tempo para o qual uma Linha do Tempo deve se repetir.

Type

O modo ou tipo de comportamento de repetição que essa instância representa, como um valor da enumeração .

Aplica-se a