2017-05-12 7 views
0

내 애니메이션으로 사운드를 재생하려고합니다. StoryBoard와 DoubleAnimation을 사용하는 작업 애니메이션이 이미 있습니다. 아무도 그 소리를 추가하는 방법을 알고 있습니까? MediaTimeline 인 경우, 스토리 보드의 내부UWP 스토리 보드 애니메이션에 사운드를 추가하는 방법

  1. :

    는 MediaTimeline을 사용하여 MediaElement에로 타임 라인을 연결하는 방법은 두 가지가 있습니다

    Microsoft 문서는 MediaTimeline 클래스를 사용하여 제안 대상 [012]에 MediaElement가 있으면 MediaClock이 만들어져 MediaElement의 연결된 플레이어에 할당됩니다. 예 : Storyboard 사용 방법 : MediaElement 제어 방법 : 을 참조하십시오.

  2. 명시 적으로 MediaTimeline에서 MediaClock을 만들고이를 MediaElement에 할당합니다.

Stack Overflow 답변도 MediaTimeline을 사용하는 것이 좋습니다.

문제는 MediaTimeline 클래스가 UWP의 Windows.Media 네임 스페이스에 존재하지 않는다는 것입니다.

내 애니메이션 코드는 다음과 같습니다 UWP 응용 프로그램에서

 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); 

답변

1

Storyboard 타임 라인에 애니메이션을 제어하기위한 것입니다. 그러나 Storyboard에 대한 uwp에는 MediaTimeLine이 없습니다.

그냥 애니메이션과 사운드를 재생하려면 내 애니메이션

과 사운드를 재생하기 위해 노력하고, 당신은 Media​Element를 추가 할 수 있습니다. Storyboard을 시작할 때 MediaElement으로 사운드를 재생하고 Storyboard이 완료되면 사운드를 일시 중지하십시오. 예를 들어 :

XAML 코드

<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" /> 

코드

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();   
}  

이 만약

뒤에 요구 사항을 충족시킬 수 없다, 당신은 세부 사항 당신이 실제로 무엇을 원하는, 우리는 UWP의 API에를 시도 할 수 있습니다 해야 할 것.