Autor Beitrag
k3nscher
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Mo 25.05.09 12:47 
Hallo,
ich bin dabei mir ein kleines Programm zu programmieren, indem auch mp3s abgespielt werden sollen.

Die Komponente um mp3s abzuspielen ist Irrklang (www.ambiera.com/irrklang/). Jetzt soll automatisch das nächste Stück gespielt werden, wenn ein Track abgespielt ist. Ich dachte mir ich lese das SoundStopEvent aus, suche den nächsten Track in der Playlist und spiele den ab.

Problem:
wie kann ich das OnStopEvent implementieren?

Als beispiel wird angegeben:

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
 class MySoundEndReceiver : public irrklang::ISoundStopEventReceiver
 {
   public:
     virtual void OnSoundStopped (irrklang::ISound* sound, irrklang::E_STOP_EVENT_CAUSE reason, void* userData)
     {
        // called when the sound has ended playing
        printf("sound has ended");
     }
 }

 // ...

 MySoundEndReceiver* myReceiver = new MySoundEndReceiver();
 irrklang::ISound* snd = engine->play2D("speech.mp3"falsefalsetrue); 
 if (snd)
    snd->setSoundStopEventReceiver(myReceiver);

 myReceiver->drop(); // similar to delete


So in der Art hab ich das nun gemacht. Das Problem ist allerdings, dass ich in der OnSoundStopped Methode ja nicht auf meine Forms zugreifen kann. Wie kann ich das Programmieren, das ich den Code der bei dem OnSoundStopped Event ausgeführt wird in meiner Form1 Class habe?
Kann man irgendwie das OnSoundStopped Ereignis auf eine andere Methode von der Form übergeben?
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Mo 25.05.09 14:24 
user profile iconk3nscher hat folgendes geschrieben Zum zitierten Posting springen:
Kann man irgendwie das OnSoundStopped Ereignis auf eine andere Methode von der Form übergeben?
Dafür gibt es in C# Events, also z.B.
ausblenden C#-Quelltext
1:
public event EventHandler SoundStopped;					

Dieses löst du in der überschriebenen Methode aus und kannst dann in der Form einen Eventhandler anhängen, in dem du Zugriff auf die Form hast.

_________________
>λ=
k3nscher Threadstarter
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Mo 25.05.09 15:44 
user profile iconKha hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconk3nscher hat folgendes geschrieben Zum zitierten Posting springen:
Kann man irgendwie das OnSoundStopped Ereignis auf eine andere Methode von der Form übergeben?
Dafür gibt es in C# Events, also z.B.
ausblenden C#-Quelltext
1:
public event EventHandler SoundStopped;					

Dieses löst du in der überschriebenen Methode aus und kannst dann in der Form einen Eventhandler anhängen, in dem du Zugriff auf die Form hast.


jau... so in der art dachte ich. Wie setze ich das genau um? Danke schonmal!