【发布时间】:2010-09-28 22:46:10
【问题描述】:
我正在为 iPad 制作一本交互式儿童读物,其中包含“朗读”选项。
对于每个页面(具有索引),都有一个音频剪辑可以产生“读给我听”功能。该功能运行良好,除了当我翻页时,即使在新音频开始时,前一页的音频仍然播放,这是我的示例:
- (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],但这似乎不起作用。在开始新剪辑之前,我需要一种方法来终止之前的音频剪辑。
【问题讨论】:
-
btw: "rtmAudio = newAudio; // 如果加载了新文件,则自动保留音频并释放旧文件" 如果是这种情况,则不会释放。
-
不是真的,我的问题与创建单个 AVAudioPlayer 的多个实例有关。
-
正如我提到的,[rtmAudio stop];不适用于前一个实例。
标签: ipad instance avaudioplayer dealloc