1

「読み聞かせ」オプションを備えた iPad 用のインタラクティブな子供向けの本に取り組んでいます。

各ページ (インデックスがある) には、「read to me」機能を生成するオーディオ クリップがあります。この機能はうまく機能しますが、ページをめくると、新しいオーディオが開始されても、前のページのオーディオがまだ再生されるという事実を除いて、これが私の例です:

- (void) didTurnToPageAtIndex:(NSUInteger)index 
{
    if ([delegate respondsToSelector:@selector(leavesView:didTurnToPageAtIndex:)])
        [delegate leavesView:self didTurnToPageAtIndex:index];

    if([[NSUserDefaults standardUserDefaults] boolForKey:@"kReadToMe"] == YES)
    {
        NSString* filename = [voices objectAtIndex:index];
        NSString *path = [[NSBundle mainBundle] pathForResource:filename ofType:@"m4v"];  
        NSLog(@"File: %@, Index: %i",path,index);

        //Create new audio for next page
        AVAudioPlayer * newAudio = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:nil]; 
        rtmAudio = newAudio; // automatically retain audio and dealloc old file if new file is loaded
        //[newAudio release];
        [rtmAudio play];
    }
}

たとえば、ページ 2 の音声の再生が停止する前にページ 3 に移動すると、両方のクリップが重ねて再生されます。

新しいファイルを割り当てる前に [rtmAudio stop] を配置しようとしましたが、うまくいかないようです。新しいクリップを開始する前に、前のオーディオ クリップを削除する方法が必要です。

4

2 に答える 2

1

アプリケーション全体でオーディオ プレーヤーのインスタンスを 1 つ持つことをお勧めします。次に、再生中かどうかを確認し、再生中の場合は停止して次に進みます。

古いプレーヤーを停止する前に、このメソッドで新しいプレーヤーを作成しています....私は信じています

于 2010-09-29T00:04:56.853 に答える
0
于 2015-01-15T06:56:02.120 に答える