我有一个scrollview。每当我达到1/7时,我想发出声音。当用户慢慢滚动时,它起作用,因为声音在另一个被触发之前完成。
但如果它太快:我有两个选择:
但我想要的是让第一个完成比赛,即使第二个(甚至第3个,第4个等)已经开始播放。
我可以使用一个AVAudioplayer吗?
var alertSound = NSBundle.mainBundle().URLForResource("Transit", withExtension: "aif")
AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryAmbient, error: nil)
AVAudioSession.sharedInstance().setActive(true, error: nil)
var error:NSError?
audioPlayer = AVAudioPlayer(contentsOfURL: alertSound, error: &error)
audioPlayer.prepareToPlay()
答案 0 :(得分:1)
为了达到你想要的效果,你需要多个 AVAudioPlayers ,一个玩家不会做这个工作。但是, AudioToolbox 框架可能会满足您的要求。
您基本上可以为声音创建系统声音ID,并随时将其关闭。一旦它被解雇,声音将会发挥出来,不利于音量,但在这种情况下这不应该是重要的。
基本的例子是(obj-C抱歉)
NSString *path=[[NSBundle mainBundle] pathForResource: @"soundName" ofType:@"aif"];
SystemSoundID soundID;
AudioServicesCreateSystemSoundID((__bridge CFURLRef)([NSURL fileURLWithPath:path]), &soundID);
AudioServicesPlaySystemSound(soundID);