2010-04-06 69 views
7

我打算免费发布10首我的歌曲录音,但捆绑在iphone应用程序中。它们不能在网络或iTunes或任何地方使用。使用AVAudioPlayer播放多个音频文件

我是新来的iphone SDK(最新),因为你可以想象,所以我一直在浏览开发者文档,各种论坛和stackoverflow来学习。

Apple的avTouch示例应用程序是一个很好的开始。但是我希望我的应用能够逐一播放所有10首歌曲。所有歌曲都添加到资源文件夹中,并命名为track1,track2 ... track10。

在avTouch应用程序代码中,我可以看到以下2个部分,这是我认为需要进行更改以实现所需内容的地方。但我迷路了。

// Load the array with the sample file 
NSURL *fileURL = [[NSURL alloc] 
       initFileURLWithPath: 
       [[NSBundle mainBundle] pathForResource:@"sample" ofType:@"m4a"]]; 


- (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag 
{ 
if (flag == NO) 
    NSLog(@"Playback finished unsuccessfully"); 

[player setCurrentTime:0.]; 
[self updateViewForPlayerState]; 
} 

任何人都可以请帮我在
1.如何将阵列与被添加到资源文件夹
2.当我打比赛,球员应该开始第一首曲目全部10首曲目加载。当第一首曲目结束时第二首曲目应该开始,以此类推其余曲目。

谢谢

回答

8

inScript,你找到了解决方案吗?你可能想坚持一些简单的事情,比如if { // do something } else { // do something else }声明,让他们连续播放。

对于加载到数组中,创建一个新的plist文件(右键单击目录树 - >添加 - >新建文件)并在其中找到属性列表;将文件声名列出。在它上面默认显示“字典”的地方,向下进入“数值类型”并选择“数组”...如果你看到该行的最右侧,你会看到一个3个小点的按钮,点击该添加您的第一个项目现在你一次添加一个项目,“track01”,“track02”等等......每行一个

此代码放在你的.h文件中:。

NSArray* soundsList; 

此代码在你身上[R .m文件:

NSString *soundsPath = [[NSBundle mainBundle] pathForResource:@"soundslist" ofType:@"plist"]; 
soundsList = [[NSArray alloc] initWithContentsOfFile:soundsPath]; 

数组总是从索引#0 ......所以如果你有5条轨道,track01将是指数0,track02将索引1,依此类推。如果你想快速查询您的阵列,看看里面有什么,你可以添加这段代码:

int i = 0; 

for (i; i <= ([soundsList count] - 1); i++) { 

    NSLog(@"soundsList contains %@", [soundsList objectAtIndex:i]); 

} 

所有这一切确实是指望有多少项目是阵列中(即5或10或然而,许多歌曲)和objectAtIndex:将返回您发送到它的任何索引号的对象。

对于回放到后面你只是把if-then语句在audioPlayerDidFinishPlaying方法

如果要播放的文件,你可以这样做:

NSString* filename = [soundsList objectAtIndex:YOURINDEXNUMBER]; 
NSString *path = [[NSBundle mainBundle] pathForResource:filename ofType:@"mp3"]; 

AVAudioPlayer * newAudio=[[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL]; 
self.theAudio = newAudio; // automatically retain audio and dealloc old file if new file is loaded 

[newAudio release]; // release the audio safely 

theAudio.delegate = self; 
[theAudio prepareToPlay]; 
[theAudio setNumberOfLoops:0]; 
[theAudio play]; 

其中YOURINDEXNUMBER是你想玩的任何曲目(记住,0 = track01,1 = track02等)

如果你需要帮助在你的.h文件中设置变量,让我知道,我可以引导你通过它。此外,请记住在您的dealloc方法中释放theAudio,以便在程序退出时释放它。

0

在你的代码中,你可以调用你的播放器,并在audioPlayerDidFinishPlaying中播放声音并跟踪你播放多少曲目(通过使用Counter)。

制作机代码ü管理乌尔玩家一次又一次地重复播放10轨.....

更多的功能u得到来自AVAudio播放器类参考参考...

为更好的外观ü把不同的按钮,自定义卷旋转小白....使用CoreAnimation类....

最佳运气

相关问题