从在U100上装好MAC后,断断续学习iPone APP的开发也已经有一段时间了,主要看的是<Beginning iPhone 3 Development Exploring the iPhone SDK>,里面的细节无一省略,正好适合我这个完全的门外汉.
斯坦福大学的教学视频应该也是非常不错的,但是实在还没时间看,看到很多人都有写过这个教学视频的学习笔记,大家可以去搜索看看.
这两天为朋友写个小程序,在实际中解决问题是学习写程序最好的方法.碰到问题,然后一一去解决问题,折腾到最后只好搁置或者超乎预计的快速搞定,过程都让人享受(好吧,也许我是站着说话不腰疼).
为按钮添加声音/播放音频,想象起来应该不算是难事,但在google上搜索了一下,没找到合适的完整教程,不得已只能靠着不多的英文提示来搞定,于是特别记录下来以抵抗遗忘的频率.
创建项目
- 1.从Xcode菜单选择”File” > “New Project”
- 2.从”iPhone OS” > “Application”中选择”View-based Application”,然后点”Choose”
- 3.将项目命名为“Sound”(项目名称任意),并按“Save”
如果是在一个现有的工程里面加入这个功能,比如我是在完成程序基本功能以后再来加入这个小功能以润色,就忽略这一步.
添加AVFoundation.frameWork
要实现为按钮添加声音/播放音频,要用到AVFoundation框架(AVFoundation.frameWork).于是,要先在项目里面添加这个框架进去.
- 1.在左侧的”Groups & Files”中,展开”Targets”
- 2.鼠标右键”Sound”(应该跟你的项目名称一致)
- 3.选择”Add”>”Existing Frameworks…”
- 4.在新出现的窗口左下方点击+按钮,然后选择”AVFounddation Framework”,并”Add”
- 5.确认在刚才的窗口下方的小窗口中出现”AVFounddation Framework”后,就可以关闭了
为项目添加声音文件
- 1.”Groups & Files”中,右键项目”Sound”,”Add”>”Existing Files…”
- 2.然后选择你准备好的音频文件,比如”click.wav”.
至此准备工作已经做好了,接下来就是添加代码了.
为按钮添加声音
1.在ViewController.h中添加代码:
#import <UIKit/UIKit.h>
#import <AVFoundation/AVFoundation.h>
@interface SoundViewController : UIViewController<AVAudioPlayerDelegate> {
}
-(IBAction) Sound:(id)sender;
@end
2.在ViewController.m中添加Sound的方法:
-(IBAction) Sound:(id)sender{
NSString *path = [[NSBundle mainBundle] pathForResource:@”click” ofType:@”wav”];
AVAudioPlayer* theAudio=[[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL];
theAudio.delegate=self;
[theAudio play];
}
如果你原本的按钮已经有一个Action了,那么其实只需要将上面{}中间的代码加入到你已经有的Action方法里面去就可以了.
播放音频
1.如果是要播放音频的话,在ViewController.h中添加代码:
#import <UIKit/UIKit.h>
#import<AVFoundation/AVAudioPlayer.h>
@interface AudioPlayerViewController : UIViewController <AVAudioPlayerDelegate>{
AVAudioPlayer *audioPlayer;
}
@end
2.在ViewController.m中取消ViewDidLoad的注解(删除/* */),然后添加代码:
- (void)viewDidLoad{
[super viewDidLoad];
NSURL *url = [NSURL fileURLWithPath:[NSString
stringWithFormat:@"%@/click.wav", [[NSBundle mainBundle] resourcePath]]];
NSError *error;
audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&error];
audioPlayer.numberOfLoops = -1; //-1代表使播放无限循环
if (audioPlayer == nil)
NSLog([error description]);
else
[audioPlayer play];
}
- (void)dealloc
{
[audioPlayer release]; //一定要记得释放
[super dealloc];
}
到此就大功告成了.
还没有真正开始学习iPhone的时候,看到很多人都在问,完全没有程序基础的人可不可以学得会.我想说的是,没有人是生下来就有什么基础的,都是从什么都不会,到会一点,然后会更多,只要有心,坚持,不急不躁,任何时候都没有太晚.
太多人都看到iPhone App的商机,看到某些人一夜暴富…这没什么不对,但我们更需要明白”有心栽花花不开,无心插柳柳成阴”的道理.