Frage

Ich habe ein paar Töne für den Einsatz in meinem Spiel erstellt. Ich kann sie bei bestimmten Veranstaltungen ohne Probleme spielen:

// create sounds
CFBundleRef mainBundle;
mainBundle = CFBundleGetMainBundle();

_soundFileShake = CFBundleCopyResourceURL(mainBundle, CFSTR("shake"), CFSTR("wav"), NULL);
AudioServicesCreateSystemSoundID(_soundFileShake, &_soundIdShake);

// later...
AudioServicesPlaySystemSound(_soundIdShake);

Das Spiel hat einen Mechanismus, der das Gerät schütteln kann einige Funktionen zu aktivieren. Ich habe das Rütteln Code getan habe, damit ich eine „Shaking gestartet“ und „Schütteln beendet“ Nachricht an mein Spiel bekommen bekommen. Was ich brauche, passieren zu müssen, ist Start „shave.wav“ zu spielen, wenn Starts und Schleife Schütteln bis zum Anschlag. Gibt es eine Möglichkeit, dies mit AudioToolbox / Audioservice zu tun? Wie könnte ich dies tun, wenn nicht?

War es hilfreich?

Lösung

Behalten des Staates „rüttelt“ und einen Rückruf für Systemsound Abschluss mit AudioServicesAddSystemSoundCompletion registrieren. Dann starten Sie einfach das System Sound wieder, wenn es abgeschlossen ist und das Gerät noch geschüttelt wird. Wenn der Ton kurz genug ist, wird dies die gewünschte Wirkung. Wenn Sie den Ton stoppt sofort, wenn das Schütteln Anschläge benötigen, um sicherzustellen, müssen Sie eine der Sound-APIs verwenden, die mehr granulare Kontrolle über die Wiedergabe bietet (zum Beispiel Audio Queue-Services oder AVAudioPlayer).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top