您的位置:首页 > 编程语言

实例iPhone编程入门教程-第九天

2011-09-22 15:01 190 查看
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 <UIKit/UIKit.h>

@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.

下载今天教程文件:
SnowFall.zip

文章本人经过修改及测试,希望大家多多交流。欢迎转载,但请注明出处,多珍惜别人的劳动成果,谢谢大家。

一切版权归http://blog.sina.com.cn/iphonesdk 所有
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: