Potrzebuję sposobu na uruchomienie/zatrzymanie pętli podczas odtwarzania dźwięku. Odkryłem, że najlepszym sposobem na zagrywanie wielu dźwięków jest użycie XNA. Stworzyłem więc obiekt SoundEffectInstance
zaczynając od obiektu SoundEffect
, który zawiera klip audio. Problem polega na tym, że mam przycisk, który powinien zmienić stan tego klipu z "zapętlonego" na "nie zapętlony" i viceversa.Pętla audio z funkcją XNA w systemie Windows Phone 8, gdy dźwięk nadal jest odtwarzany
Oto problem: wysyła zgłoszenie wyjątku, że pętla musi zostać ustawiona przed pierwszym odtworzeniem. Więc pomyślałem, że podczas przełączania z "non looping" na "looped", mogę po prostu czekać na zatrzymanie dźwięku, a następnie odtworzyć SoundEngineInstance
, ustawienie IsLooped = true
i zacząć od nowa. Ten działa, ale jest pewne opóźnienie i to powoduje utratę czasu, więc jest zupełnie bezużyteczne.
To, czego szukam, to sposób na ustawienie lub anulowanie pętli podczas odtwarzania dźwięku i bez żadnego opóźnienia.
EDIT:
Próbowałem za pomocą dwóch SoundEngineInstance
, jeden zapętlone i nie, i po prostu przełączać się między nimi za pomocą głośność. Problem polega na tym, że pętla nie zapętlona zatrzymuje się po pierwszym odtworzeniu, więc jeśli ją zapętrę na dwa razy, a następnie ustawię ją w stan braku pętli, nie będzie odtwarzany żaden dźwięk, ponieważ nie zapętlony klip już się zakończył!
Sugestie?
Odkąd chcesz, aby dźwięk był w pętli, czy powiedziałbyś, że jest bardziej jak piosenka, a nie "SoundEffect"? – ChiefTwoPencils
Mam kilka krótkich próbek i chcę je zapętlić. Mówię o "SoundEffect", ponieważ jest to klasa XNA, której używam do odtwarzania. – StepTNT