2014-01-15 54 views
1

我想創建一個動畫,其中一行的每個單詞在某些間隔後將其前景色從黑色更改爲白色。 最初所有單詞都設置爲黑色。 我已經使用這個代碼:在Windows 8應用程序中突出顯示動畫的文本

DispatcherTimer text1timer = new DispatcherTimer(); 
text1timer.Interval = TimeSpan.FromMilliseconds(440); 
     text1timer.Tick += text1timer_Tick; 
     text1timer.Start(); 

void text1timer_Tick(object sender, object e) 
    { 
     text1timer.Tick -= text1timer_Tick; 

     txt1.Foreground = new SolidColorBrush(Colors.White);   
     text1timer.Stop(); 

     text1timer.Tick += text2timer_Tick; 
     text1timer.Start(); 
    } 


private void text2timer_Tick(object sender, object e) 
    { 
     text1timer.Tick -= text2timer_Tick; 

     txt2.Foreground = new SolidColorBrush(Colors.White); 
     text1timer.Stop(); 

     text1timer.Tick += text3timer_Tick; 
     text1timer.Start(); 

    } 

    private void text3timer_Tick(object sender, object e) 
    { 
     text1timer.Tick -= text3timer_Tick; 

     txt3.Foreground = new SolidColorBrush(Colors.White); 
     text1timer.Stop(); 

     text1timer.Tick += text4timer_Tick; 
     text1timer.Start(); 
    } 

等等,但我有超過100個字,我將不得不作出timer.is有任何其他解決方案的超過100個事件?

+0

text2timer和text3timer是text1timer.in事件中的第一個事件,我做了第一個包含第一個單詞從黑到白的第一個單詞,在第二個事件即text2timer第二個單詞從黑到白等等。 –

+0

你有沒有試過這個故事板動畫? – Sankarann

+0

我怎麼能用故事板做到這一點? –

回答

1

您可以使用StoryBoard獲得所需的功能。請檢查以下代碼。

<Page.Resources> 
    <Storyboard x:Name="TextForegroundSb" RepeatBehavior="Forever"> 
     <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(FrameworkElement.Tag)" Storyboard.TargetName="textBlock"> 
     <DiscreteObjectKeyFrame KeyTime="0:0:0.0" Value="Red"/> 
      <DiscreteObjectKeyFrame KeyTime="0:0:0.2" Value="Green"/> 
      <DiscreteObjectKeyFrame KeyTime="0:0:0.4" Value="Blue"/> 
     </ObjectAnimationUsingKeyFrames> 
    </Storyboard> 
</Page.Resources> 

這裏是正文塊

<TextBlock x:Name="textBlock" TextWrapping="Wrap" Text="TextBlock" FontSize="48" Tag="Red" FontWeight="Bold" Foreground="{Binding Tag, RelativeSource={RelativeSource Mode=Self}}" FontFamily="Global User Interface" /> 

您也可以通過更改DiscreteObjectKeyFrame KeyTime屬性修改時間。

要在按鈕上播放故事板,請點擊此代碼。

xmlns:Interactivity="using:Microsoft.Xaml.Interactivity" <br/>    
xmlns:Core="using:Microsoft.Xaml.Interactions.Core" <br/> 
xmlns:Media="using:Microsoft.Xaml.Interactions.Media" <br/> 

    <Button Content="Start sb" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="915,285,0,0" Height="119" Width="276"> 
     <Interactivity:Interaction.Behaviors> 
      <Core:EventTriggerBehavior EventName="Click"> 
       <Media:ControlStoryboardAction Storyboard="{StaticResource TextForegroundSb}"/> 
      </Core:EventTriggerBehavior> 
     </Interactivity:Interaction.Behaviors> 
    </Button> 

希望這會有所幫助。 謝謝..

+0

我做了一些修改,我們的代碼,這是工作。 –

+0

很高興聽到它的作品。乾杯。 :) – asitis

0

使用故事板!有在線和MSDN上的說明。

+0

這不是一個正確的答案。這將是更好的帖子作爲評論下的問題。如果你想要回答後,你必須給出解釋你的答案與適當的來源。謝謝 – Kumar

相關問題