IOS: звук в прокрутке

У меня есть этот код:

- (void) setAudioScroll{
NSString *path = [NSString stringWithFormat:@"%@/%@",
                  [[NSBundle mainBundle] resourcePath],
                  @"scroll1.mp3"];
NSURL *filePath = [NSURL fileURLWithPath:path isDirectory:NO];
soundScroll = [[AVAudioPlayer alloc] initWithContentsOfURL:filePath error:nil];
[soundScroll prepareToPlay]; 

}

- (void) scrollViewDidScroll:(UIScrollView *)scrollView{


    [soundScroll play];
}

Затем я хочу издать звук при прокрутке прокрутки. но когда я прокручиваю его, я вижу, что это не работает нормально, потому что, когда он вызывает звук mp3, он на короткое время останавливает прокрутку. Могу ли я использовать отдельный поток?


person cyclingIsBetter    schedule 06.12.2011    source источник


Ответы (1)


- (void) scrollViewDidScroll:(UIScrollView *)scrollView

Вызывается много раз во время одной прокрутки через очень короткие промежутки времени, вы не хотите вызывать [soundScroll play]; каждый раз, когда происходит этот обратный вызов, вместо этого используйте этот обратный вызов

- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView

чтобы звук воспроизводился один раз, когда начинается прокрутка, или любой из этих

- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView

если вы хотите, чтобы звук воспроизводился после прокрутки пользователем. Если вы хотите, чтобы короткий звук непрерывно повторялся при прокрутке, вы можете установить для свойства AVAudioPlayer numberOfLoops отрицательное значение, чтобы он зацикливался бесконечно, а затем останавливал его, когда прокрутка останавливается.

person jbat100    schedule 06.12.2011
comment
Я понимаю, что вы мне говорите, но мой мп3 - это одиночный клип, он занимает меньше секунды... а потом я звоню мп3 много раз - person cyclingIsBetter; 06.12.2011
comment
Поместите NSLog в scrollViewDidScroll, вы увидите, с какой скоростью он вызывается во время прокрутки. Что вы можете сделать, так это установить для свойства AVAudioPlayer numberOfLoops отрицательное значение, чтобы оно зацикливалось бесконечно, а затем останавливало его, когда прокрутка останавливалась. - person jbat100; 06.12.2011