3

我试图在不同的时间播放不同的声音。基于按钮按下或计时器超时等。这是代码。

播放声音功能:

-(void)myPlaySound:(NSString *)mySoundFile NumberOfLoops:(int)loopsCount ofType:(NSString *)fileType
{


NSURL* musicFile = [NSURL fileURLWithPath:[[NSBundle mainBundle]
                                           pathForResource:mySoundFile
                                           ofType:fileType]];

myAudio  = [[AVAudioPlayer alloc] initWithContentsOfURL:musicFile error:nil];

myAudio.volume = audioVolume;

myAudio.delegate = self;

myAudio.numberOfLoops = loopsCount;
[myAudio prepareToPlay];
 [myAudio play];

}

停止声音:

    if([myAudio isPlaying]){
        [myAudio stop];
        myAudio.currentTime = 0;
    }

问题:有时我收到此错误:AudioQueue: request to trim 0 + 1676 = 1676 frames from buffer contains 1152 frames

只要调用 [myAudio play],就会​​发生错误。

对此的任何帮助表示赞赏。

4

2 回答 2

3

我遇到了这个问题,就像 Radu 说的那样,我似乎遇到的问题是试图在它已经播放的时候播放一个声音。如果声音被另一种声音取代,我认为这没什么大不了的,但请注意不要在已经播放的同时尝试播放相同的声音。

于 2013-01-02T23:23:17.827 回答
3

有点晚了,但如果你还没有解决你的问题,这可能会有所帮助。

如果你myAudio在玩之前停下来,myAudio你可以消除这个问题。

所以你在哪里:

    myAudio.numberOfLoops = loopsCount;
    [myAudio prepareToPlay];
    [myAudio play];

尝试将其更改为:

    [myAudio stop];
    myAudio.numberOfLoops = loopsCount;
    [myAudio prepareToPlay];
    [myAudio play];
于 2014-04-30T17:44:06.427 回答