Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System; //für TimeSpan
- using System.Windows.Media; //für den sound, zusätzlich müssen referenzen hinzugefügt werden: PresentationCore, WindowsBase
- using System.Windows.Forms; //für Application.StartupPath
- using System.Diagnostics; //für Debug.WriteLine("");
- using System.IO;
- namespace RKv1
- {
- class Ton
- {
- static TimeSpan startZeit = new TimeSpan(0); //zum zurücksetzen der zeit der soundplayer -> sound[i].Position = t;
- static string sp = Application.StartupPath; //System.Uri verlangt den ganzen pfad. damit man trotzdem nur den pfad ab der exe angeben kann, füge ich den pfad zur exe einfach davor ein -> new System.Uri(sp + pfad)
- static int loadedCounter;
- static int shouldloadCounter;
- MediaPlayer[] sound;
- int i; //zum durchlaufen des sound arrays
- int anzahl; //wie oft der sound geladen werden soll
- /// <summary>
- /// läd eine wav sounddatei
- /// </summary>
- /// <param name="pfad">pfad an der sich die wav sounddatei befindet</param>
- /// <param name="anzahl">wie oft der sound geladen werden soll, um ihn parallel abspielen zu können</param>
- public Ton(int anzahl)
- {
- shouldloadCounter += anzahl;
- i = 0;
- this.anzahl = anzahl;
- sound = new MediaPlayer[anzahl];
- }
- /// <summary>
- /// Läd eine wav. datei, die sich im angegebenen pfad befindet. (pfad von der exe aus) gibt true bei erfolg zurück
- /// </summary>
- public bool load(string pfad)
- {
- //mit ersten mediaplayer im array testweise den sound öffnen
- if(!File.Exists(sp + pfad))
- {
- Debug.WriteLine("Ton: load() gescheitert! Fehlerhafter Pfad");
- return false;
- }
- try
- {
- for (int a = 0; a < anzahl; ++a)
- {
- sound[a] = new MediaPlayer();
- sound[a].MediaOpened += new System.EventHandler(counter);
- sound[a].Open(new System.Uri(sp + pfad)); //sound laden
- }
- }
- catch (NotSupportedException n)
- {
- Debug.WriteLine("Ton: load() gescheitert! " + n);
- return false;
- }
- Debug.WriteLine("Ton: load() erfolgreich, der pfad kann aber dennoch falsch sein");
- return true; //keine fehler
- }
- /// <summary>
- /// spielt den geladenen sound ab
- /// </summary>
- public void play()
- {
- if (shouldloadCounter == loadedCounter) //alle sounds die geladen werden sollten auch fertig geladen ?
- { //(ansonsten treten möglicherweise bugs beim versuch einen nicht geladenen sound abzuspielen auf)
- sound[i].Position = startZeit;
- sound[i].Play();
- ++i;
- if (i >= anzahl)
- i = 0;
- }
- }
- void counter(object sender, System.EventArgs e)
- {
- ++loadedCounter;
- }
- }//class
- }
Advertisement
Add Comment
Please, Sign In to add comment