2013-03-02 1 views
0

여기에 제가 지금 진행하고있는 설정이 있습니다. 그렇다면 _BGMusic SoundEfect가 끝났을 때 어떻게 알 수 있습니까? 나는 몇 초주기를 반복하는 게임 루프를 돌리고 있으며 궁극적으로이 노래를 반복하고 싶다. 방금 Sound에서 소리를 저장 한 있지만 Sound.Play() 메소드를 구현 위치를 표시하지 않는 것 같습니다이 코드에서사운드 효과가 재생되는지 확인하는 방법 (BG 노래 반복)

using Microsoft.Xna.Framework; 
using Microsoft.Xna.Framework.Audio; 

    SoundEffect _BGMUSIC; 

    public Page1() { 
    ... 

    LoadSound("sfx/piano.wav", out _BGMUSIC); 
    ... 
    } 

    private void LoadSound(String SoundFilePath, out SoundEffect Sound) { 
     // For error checking, assume we'll fail to load the file. 
     Sound = null; 
     try { 
      // Holds informations about a file stream. 
      StreamResourceInfo SoundFileInfo = 
        App.GetResourceStream(new Uri(SoundFilePath, UriKind.Relative)); 
      // Create the SoundEffect from the Stream 
      Sound = SoundEffect.FromStream(SoundFileInfo.Stream); 
      FrameworkDispatcher.Update(); 
     } catch (NullReferenceException) { 
      // Display an error message 
      MessageBox.Show("Couldn't load sound " + SoundFilePath); 
     } 
    } 
+0

당신이 이제까지이 문제에 대한 해결책을 찾았나요? – tmwoods

+0

아직 해결책이 없습니다 –

답변

0

좋아을 그래서이 질문에 대한 대답은 실제로 매우 간단하며 마이크로 소프트의 MSDN 페이지에 아주 잘 설명되어 있습니다 (한번에).

위의 내용으로 구현하려면 다음을 수행해야합니다. 나는 SoundEffectInstance을 초기화 할 그 아래에 있도록

내가 내 주요 방법에 SoundEffect를 초기화 내 예에서 글로벌 SoundEffectInstance

SoundEffectInstance _BGMUSICINSTANCE; 

을 만듭니다.

_BGMUSICINSTANCE = _BGMUSIC.CreateInstance(); 

이제 인스턴스가로드 우리가 true로 루프 속성을 설정할 수 있습니다 준비된다. 기본 방법이나 원하는 곳에서이 작업을 수행 할 수도 있습니다. 그것은 글로벌

_BGMUSICINSTANCE.IsLooped = true; 

는 마지막 곡을 연주의

_BGMUSICINSTANCE.Play(); 

참조 페이지 http://msdn.microsoft.com/en-us/library/dd940203(v=xnagamestudio.31).aspx

0

. 문제를 해결할 가능성이있는 Sound.IsPlaying 부울은 없지만 문제를 해결하는 데 사용할 수있는 Sound.Duration 속성이 있습니다. 특히 Timer (두 플래그를 함께 사용하여 내가 사용한 적이 또한

. 소리가 재생되는지 여부 뭔가를 보여하지만 just foundSound.IsDisposed 속성입니다. 나는 확실히 정확하게 당신이 찾고있는 무엇을뿐만 아니라 그것이 될 수 있기 때문에이로 보일 것이다.

+0

완료되면 음향 효과가 삭제되지 않습니다. 그럴 경우 Soundeffect.Play()를 호출 할 때마다 다시로드해야합니다. 또한 이미 실행중인 게임 타이머가있어서 초를 사용하는 것이 매우 효율적이라고 생각하지 않습니다. 귀하의 회신에 감사드립니다. Duration 속성에 대해 알고 있지만 기본적으로이 질문에 대한 모든 것을 사용하는 방법을 모르겠습니다. 특별히 언급하지는 않았지만. –

+0

사운드 재생 중 원래 타이머가 사용 중입니까? 당신이 그것을 빌릴 수 있기 때문에, 또는 그 값을 기록하고 기간 값과 비교할 수 있습니다. – tmwoods

+0

예 아니요. 게임 시간이 시작되지만 음악이 시작되면 타이머가 시작됩니다. –

관련 문제