DAY NINE – Snow Fall
今天来建立一个 iPhone app,给你的iPhone制作一场雪景。
纲要:
- 在程序显示前运行代码 -
- UIImageView 的运用 -
- 关于iPhone的“Utility Application” 运用 -
- onTimer 代码运用 -
- onAnimation 代码运用 -
首先运行以安装好的 xCode
选择: File->New Project.
从 "New Project" 窗口
选择 : iPhone OS ->Applications-> Utility Application
命名 : 我这里命名为 “SnowFall”
(1) 在xCode打开 MainView.h 文件,加入下面代码
#import
@interface MainViewController : UIViewController {
UIImage* flakeImage;
}
@property (nonatomic, retain) UIImage* flakeImage;
- (void)onTimer;
- (void)onAnimationComplete:(NSString *)animationID finished:(NSNumber *)finished context:(void *)context;
@end
(2) 在xCode打开 MainView.m 文件,加入下面代码
#import "MainViewController.h"
#import "MainView.h"
@implementation MainViewController
@synthesize flakeImage;
- (void)viewDidLoad {
[super viewDidLoad];
// 把背景颜色设置为冷色
self.view.backgroundColor = [UIColor colorWithRed:0.5 green:0.5 blue:1.0 alpha:1.0];
// 把雪花图片文件不停导出
flakeImage = [UIImage imageNamed:@"flake.png"];
// 在onTimer设置开始时间每秒二十次
[NSTimer scheduledTimerWithTimeInterval:(0.05) target:self selector:@selector(onTimer) userInfo:nil repeats:YES];
}
// Timer event is called whenever the timer fires
- (void)onTimer
{
//建立一个雪花图片 flake image
UIImageView* flakeView = [[UIImageView alloc] initWithImage:flakeImage];
//use the random() function to randomize up our flake attributes
int startX = round(random() % 320);
int endX = round(random() % 320);
double scale = 1 / round(random() % 100) + 1.0;
double speed = 1 / round(random() % 100) + 1.0;
// set the flake start position
flakeView.frame = CGRectMake(startX, -100.0, 25.0 * scale, 25.0 * scale);
flakeView.alpha = 0.25;
// put the flake in our main view
[self.view addSubview:flakeView];
[UIView beginAnimations:nil context:flakeView];
// set up how fast the flake will fall
[UIView setAnimationDuration:5 * speed];
// set the postion where flake will move to
flakeView.frame = CGRectMake(endX, 500.0, 25.0 * scale, 25.0 * scale);
// set a stop callback so we can cleanup the flake when it reaches the
// end of its animation
[UIView setAnimationDidStopSelector:@selector(onAnimationComplete:finished:context:)];
[UIView setAnimationDelegate:self];
[UIView commitAnimations];
}
- (void)onAnimationComplete:(NSString *)animationID finished:(NSNumber *)finished context:(void *)context {
UIImageView *flakeView = context;
[flakeView removeFromSuperview];
// open the debug log and you will see that all flakes have a retain count
// of 1 at this point so we know the release below will keep our memory
// usage in check
NSLog([NSString stringWithFormat:@"[flakeView retainCount] = %d", [flakeView retainCount]]);
[flakeView release];
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
// Return YES for supported orientations
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning]; // Releases the view if it doesn't have a superview
// Release anything that's not essential, such as cached data
}
- (void)dealloc {
[flakeImage release];
[super dealloc];
}
@end
(3) 导入下面图片文件
下载下面图片,放入 SnowFall 文件夹内并命名为下面名称
flake.png
在xCode下右键点击 SnowFall->Add->Existing Files; 在 SnowFall 文件夹内,选择下载好的图片,按 Add
最后在 xCode 选择 Build->Build and Go; Save All.
下载今天教程文件: Day09
文章本人经过修改及测试,希望大家多多交流。欢迎转载,但请注明出处,多珍惜别人的劳动成果,谢谢大家。
一切版权归http://blog.sina.com.cn/iphonesdk 所有
更多关于iPhone编程的内容可以参阅下书,
链接: