每次触摸屏幕时都会在Cocoa中播放声音

时间:2014-10-09 19:50:06

标签: ios xcode cocoa

每次点击游戏中的屏幕时,我都会尝试播放声音......

基本上,每次我的角色跳跃,我都不会发出一点声音。不幸的是,如果循环(来自前一个跳转)已经从前一个会话播放完毕,它似乎只播放循环...意思是每次触摸屏幕时我实际上并没有得到声音影响......

使用此框架:

 #import <AVFoundation/AVFoundation.h>

这是我加载文件的方式:

 -(void)LoadMusic{
     NSString *jumpSound = [[NSBundle mainBundle] pathForResource:@"Burst" ofType:@"mp3"];
     jumpAffect = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:jumpSound] error:NULL];
     jumpAffect.delegate = self;
 }

在viewDidLoad中调用它:

 - (void)viewDidLoad{
     [self LoadMusic];
     ...
     [super viewDidLoad];
 }

这就是我希望它播放的时候(每当我触摸屏幕时(让角色跳跃):

 -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *) event{
     [jumpAffect play];
     jump = 16;
 }

有什么东西我忘了让循环互相播放吗?或者我可以停止循环并重新启动它,如果它仍然在下一次触摸时播放?

1 个答案:

答案 0 :(得分:1)

尝试这样的事情:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
  [self playJumpSound];
}

- (void)playJumpSound {
  AVAudioPlayer *jumpEffect = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:jumpSound] error:NULL];
  [jumpEffect play];
}

如果您发现加载声音太慢,请先加载少量声音,然后重复使用播放器。