我已经创建了一些声音在我的游戏中使用。我可以在某些事件发挥他们没有问题:

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

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

// later...
AudioServicesPlaySystemSound(_soundIdShake);

在游戏中有一个机构,它允许你振动设备来激活一些功能。我有做过,所以我得到得到一个“惊天开始”和“惊天结束”的消息给我的比赛摇晃代码。我需要有发生是开始摇晃并开始循环时它,直到它停止播放“shave.wav”。有没有办法用AudioToolbox / AudioServices做到这一点?我怎么能如果不能做到这一点?

有帮助吗?

解决方案

该“的摇晃”状态的跟踪,并注册系统声音完成与AudioServicesAddSystemSoundCompletion回调。然后,只需重新启动系统声音时,它完成和设备仍然被动摇。如果声音足够短,这将创造预期的效果。如果需要确保的声音立即停止时震动停止,则需要使用声音API,提供了与播放(例如,音频队列服务或AVAudioPlayer)更精细的控制中的一个。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top