2017-05-12 3 views
0

Ich versuche, einen Sound mit meiner Animation zu spielen. Ich habe bereits eine Animation mit StoryBoard und DoubleAnimation. Weiß jemand, wie man einen Ton hinzufügt?Wie füge ich Sound zu UWP Storyboard Animation hinzu

Microsoft Dokumentation schlägt eine MediaTimeline-Klasse:

Es gibt zwei Möglichkeiten, eine Timeline zu einem Mediaelement mit einem MediaTimeline zuzuordnen:

  1. Innerhalb eines Storyboard, wenn ein MediaTimeline ist Ziele [sic] ein MediaElement, ein MediaClock wird erstellt und dem MediaElement zugeordneten Player zugewiesen. Siehe Vorgehensweise: Steuern eines MediaElement mithilfe eines Storyboards für ein Beispiel;

  2. Durch explizites Erstellen eines MediaClock aus einer MediaTimeline und Zuweisen zu einem MediaElement.

Stack Overflow Antworten schlagen auch MediaTimeline verwenden.

Problem ist, dass MediaTimeline-Klasse nicht in Windows.Media-Namespace für UWP vorhanden ist.

Meine Animation Code sieht wie folgt aus:

 DoubleAnimation animX = new DoubleAnimation(); 
     DoubleAnimation animY = new DoubleAnimation(); 

     animX.Duration = TimeSpan.FromMilliseconds(600); 
     animY.Duration = TimeSpan.FromMilliseconds(800); 
     animX.From = pStart.X; 
     animX.To = pEnd.X; 
     animY.From = pStart.Y; 
     animY.To = pEnd.Y; 

     Storyboard StarStoryboard = new Storyboard(); 

     Storyboard.SetTarget(animX, this.MyImage); 
     Storyboard.SetTargetProperty(animX, "(Canvas.Left)"); 

     Storyboard.SetTarget(animY, this.MyImage); 
     Storyboard.SetTargetProperty(animY, "(Canvas.Top)"); 

     StarStoryboard.Children.Add(animX); 
     StarStoryboard.Children.Add(animY); 

Antwort

1

Storyboard in UWP App Animationen mit einer Zeitleiste zu steuern. Aber es gibt keine MediaTimeLine in uwp für Storyboard.

Ich versuche, einen Ton mit meiner Animation

Wenn Sie nur können Sie einen Media​Element hinzufügen, einen Ton mit der Animation spielen wollen zu spielen. Und spielen Sie den Ton von MediaElement, wenn Sie die Storyboard beginnen und den Ton anhalten, wenn die Storyboard abgeschlossen ist. Zum Beispiel:

XAML-Code

<Button 
    Canvas.Top="250" 
    Margin="2" 
    Click="Animation_Begin" 
    Content="Begin" /> 
<Canvas> 
    <Image 
     x:Name="MyImage" 
     Width="50" 
     Height="50" 
     Source="Assets/caffe1.jpg" /> 
</Canvas> 
<MediaElement 
    x:Name="mediaforanimation" 
    AutoPlay="False" 
    Source="Assets\2.mp3" /> 

-Code hinter

Storyboard StarStoryboard = new Storyboard(); 
public Storyboardbegin() 
{ 
    this.InitializeComponent(); 
    StarStoryboard.Completed += StarStoryboard_Completed; 
    DoubleAnimation animX = new DoubleAnimation(); 
    DoubleAnimation animY = new DoubleAnimation(); 
    animX.Duration = TimeSpan.FromMilliseconds(600); 
    animY.Duration = TimeSpan.FromMilliseconds(800); 
    animX.From = 0; 
    animX.To = 200; 
    animY.From = 0; 
    animY.To = 200;  
    Storyboard.SetTarget(animX, this.MyImage); 
    Storyboard.SetTargetProperty(animX, "(Canvas.Left)"); 
    Storyboard.SetTarget(animY, this.MyImage); 
    Storyboard.SetTargetProperty(animY, "(Canvas.Top)"); 
    StarStoryboard.Children.Add(animX); 
    StarStoryboard.Children.Add(animY); 
} 

private void StarStoryboard_Completed(object sender, object e) 
{ 
    mediaforanimation.Pause(); 
} 

private void Animation_Begin(object sender, RoutedEventArgs e) 
{ 
    StarStoryboard.Begin(); 
    mediaforanimation.Play();   
}  

Ist dies Ihre Anforderungen nicht erfüllen, können Sie detailliert, was Sie wirklich tun wollen, können wir die APIs in UWP versuchen, machen.

Verwandte Themen