Question

J'ai créé quelques sons pour une utilisation dans mon jeu. Je peux les jouer à certains événements sans problème:

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

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

// later...
AudioServicesPlaySystemSound(_soundIdShake);

Le jeu a un mécanisme qui vous permet de secouer l'appareil pour activer certaines fonctionnalités. J'ai le code fait trembler je me reçois un « secouage commencé » et « secouer terminé » message à mon jeu. Ce que je dois avoir arriver est de commencer à jouer « shave.wav » en secouant commence et en boucle jusqu'à l'arrêt. Est-il possible de le faire avec AudioToolbox / AudioServices? Comment pourrais-je faire sinon?

Était-ce utile?

La solution

Sachez toujours de la « secoue » état et enregistrer un rappel pour l'achèvement de son système avec AudioServicesAddSystemSoundCompletion. Ensuite, il suffit de commencer le son du système à chaque fois que cela se termine et que le dispositif est encore secoué. Si le son est assez court, cela va créer l'effet désiré. Si vous devez vous assurer le son arrête immédiatement lorsque la fin des secousses, vous aurez besoin d'utiliser l'une des API sonores qui permet un contrôle plus granulaire sur la lecture (par exemple, la file d'attente des services audio ou AVAudioPlayer).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top