Guest User

class Ton

a guest
Jun 1st, 2014
322
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.20 KB | None | 0 0
  1. using System; //für TimeSpan
  2. using System.Windows.Media; //für den sound, zusätzlich müssen referenzen hinzugefügt werden: PresentationCore, WindowsBase
  3. using System.Windows.Forms; //für Application.StartupPath
  4. using System.Diagnostics; //für Debug.WriteLine("");
  5. using System.IO;
  6.  
  7.  
  8. namespace RKv1
  9. {
  10.     class Ton
  11.     {
  12.         static TimeSpan startZeit = new TimeSpan(0); //zum zurücksetzen der zeit der soundplayer ->  sound[i].Position = t;
  13.         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)
  14.         static int loadedCounter;
  15.         static int shouldloadCounter;
  16.  
  17.         MediaPlayer[] sound;
  18.         int i; //zum durchlaufen des sound arrays
  19.         int anzahl; //wie oft der sound geladen werden soll
  20.  
  21.         /// <summary>
  22.         /// läd eine wav sounddatei
  23.         /// </summary>
  24.         /// <param name="pfad">pfad an der sich die wav sounddatei befindet</param>
  25.         /// <param name="anzahl">wie oft der sound geladen werden soll, um ihn parallel abspielen zu können</param>
  26.         public Ton(int anzahl)
  27.         {
  28.             shouldloadCounter += anzahl;
  29.  
  30.             i = 0;
  31.             this.anzahl = anzahl;
  32.  
  33.             sound = new MediaPlayer[anzahl];
  34.         }
  35.  
  36.         /// <summary>
  37.         /// Läd eine wav. datei, die sich im angegebenen pfad befindet. (pfad von der exe aus) gibt true bei erfolg zurück
  38.         /// </summary>
  39.         public bool load(string pfad)
  40.         {
  41.             //mit ersten mediaplayer im array testweise den sound öffnen
  42.  
  43.             if(!File.Exists(sp + pfad))
  44.             {
  45.                 Debug.WriteLine("Ton: load() gescheitert! Fehlerhafter Pfad");
  46.                 return false;
  47.             }
  48.  
  49.             try
  50.             {
  51.                 for (int a = 0; a < anzahl; ++a)
  52.                 {
  53.                     sound[a] = new MediaPlayer();
  54.                     sound[a].MediaOpened += new System.EventHandler(counter);
  55.                     sound[a].Open(new System.Uri(sp + pfad)); //sound laden
  56.                 }
  57.             }
  58.             catch (NotSupportedException n)
  59.             {
  60.                 Debug.WriteLine("Ton: load() gescheitert! " + n);
  61.                 return false;
  62.             }
  63.  
  64.             Debug.WriteLine("Ton: load() erfolgreich, der pfad kann aber dennoch falsch sein");
  65.  
  66.  
  67.             return true; //keine fehler
  68.         }
  69.  
  70.         /// <summary>
  71.         /// spielt den geladenen sound ab
  72.         /// </summary>
  73.         public void play()
  74.         {
  75.             if (shouldloadCounter == loadedCounter) //alle sounds die geladen werden sollten auch fertig geladen ?
  76.             {                                       //(ansonsten treten möglicherweise bugs beim versuch einen nicht geladenen sound abzuspielen auf)
  77.                 sound[i].Position = startZeit;
  78.                 sound[i].Play();
  79.                 ++i;
  80.  
  81.                 if (i >= anzahl)
  82.                     i = 0;
  83.             }
  84.         }
  85.  
  86.         void counter(object sender, System.EventArgs e)
  87.         {
  88.             ++loadedCounter;
  89.         }
  90.     }//class
  91. }
Advertisement
Add Comment
Please, Sign In to add comment