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:
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) { printf("sound has ended"); } }
MySoundEndReceiver* myReceiver = new MySoundEndReceiver(); irrklang::ISound* snd = engine->play2D("speech.mp3", false, false, true); if (snd) snd->setSoundStopEventReceiver(myReceiver);
myReceiver->drop(); |
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?