NSSound zweimal abspielen

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • also ich hab mal ein bisschen gegraben und NSSound macht einen neuen Thread auf. Allerdings wird der wenn der Sound zu ende ist nicht wieder beendet. Also für mich richt das stark nach Bug in NSSound aber ich bin mir nicht sicher. Man kann das Objekt auch per dealloc nicht zerstören, ohne dass das Programm abstürzt, trotz vernünftiger Initialisierung, weil er dann Probleme mit dem Thread bekommt.
    Chris
  • Auf das unhöfliche sleep() würde ich ganz verzichten, und statt dessen den Vorschlag von 'Objcler' aufgreifen:

    Quellcode

    1. [sound performSelector:@selector(play) withObject:nil afterDelay:1.2];
    Dann bleibt aber noch das 'stop' Problem, und deshalb muss doch eine Methode geschrieben werden:

    Quellcode

    1. -(void) performSoundRestart:(NSSound *) sound
    2. {
    3. // if([sound isPlaying])
    4. [sound stop];
    5. [sound play];
    6. }
    'isPlaying' ist dabei tatsächlich wirkungslos. Das zu kontrollieren wäre aber nicht übertrieben paranoid.

    Der Aufruf sähe dann so aus:

    Quellcode

    1. [self performSelector:@selector(performSoundRestart:) withObject:sound afterDelay:2.8];
    I would be embarrassed if they did not spy on me.