2014-10-09 71 views
0

我想我每次點擊屏幕在我的遊戲時間播放聲音畫面時...每次觸摸

基本上,每一個我的性格跳躍的時候,我wan't播放聲音可可一個小小的聲音播放。不幸的是,如果循環(從前面的跳轉)已經完成了前一個會話的播放,似乎只播放循環...意思是我每次觸摸屏幕時都沒有聽到聲音...

使用此框架:

#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; 
} 

有什麼我忘了啓動迴路超過對方要播放?或者如果在下一次觸摸時仍在播放,我可以停止循環並重新啓動它?

+2

如果您想一次播放多個聲音,則需要多個'AVAudioPlayer'。 – 2014-10-09 19:53:52

回答

1

嘗試這樣:

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

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

如果你發現你的加載聲音太緩慢,加載它們極少數的前期,然後再用球員。

+0

嘿。感謝發佈。這已經解決了我的問題...它現在每次觸摸時都會重新載入並重播聲音... :) – Reanimation 2014-10-09 20:23:10

+0

您應該對此源運行內存泄漏分析以防萬一。我沒有,所以它可能會泄漏(特別是如果你不使用ARC)。 – 2014-10-09 20:25:45

+0

這樣做的最好方法是什麼?謝謝。 – Reanimation 2014-10-09 20:27:39