我打算免费发布我的10首歌曲录音,但是捆绑在一个iphone应用程序中。它们不适用于网络或iTunes,也不适用于现在的任何地方。
我是iphone sdk(最新版)的新手,你可以想象,所以我一直在浏览开发者文档,各种论坛和stackoverflow来学习。
Apple的avTouch示例应用程序是一个很好的开始。但我希望我的应用程序逐一播放所有10首曲目。所有歌曲都添加到资源文件夹中,并命名为track1,track2 ... track10。
在avTouch应用程序代码中,我可以看到以下两个部分,我认为我需要进行更改以实现我正在寻找的内容。但我迷路了。
// 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.如何使用添加到资源文件夹的所有10个轨道加载阵列
2.当我上场时,玩家应该开始第一首曲目。当第一个轨道结束时,第二个轨道应该开始,依此类推剩下的轨道。
谢谢
答案 0 :(得分:8)
inScript,你找到了解决方案吗?你可能想要坚持像if { // do something } else { // do something else }
语句一样简单的东西来背靠背地播放它们。
要加载到数组中,请创建一个新的plist文件(右键单击目录树 - > Add |> New File“并在其中找到属性列表;将文件命名为soundslist。接下来打开该新文件,右键点击它默认显示“词典”,下到“值类型”并选择“数组”...如果你看到该行的最右边,你会看到一个小的3栏看按钮,点击即可添加您的第一个项目。现在您一次添加一个项目,“track01”,“track02”等...每行一个。
此代码位于.h文件中:
NSArray* soundsList;
此代码位于.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
,以便在程序退出时释放它。
答案 1 :(得分:0)
在你的代码中你可以在audioPlayerDidFinishPlaying中调用你的播放器并再次播放声音,并跟踪你播放多少曲目(通过使用Counter)。
制作调节码你管理你的玩家反复播放10个音轨......
有关更多功能,请参阅AVAudio播放器类参考...
为了更好看,你把不同的按钮和自定义音量旋转菜鸟....使用CoreAnimation Class ....
祝你好运