本文档版权归NickTang所有,没有本人书面或电子邮件允许,不许转载,摘录,发表。多谢!
我们很难想像一个不包含动画的iOS应用程序,一个iOS游戏更是不可能没有动画,因此我从今天开始一个新的课题---如何写动画相关的代码。
这里的第一篇文章其实和iOS提供的动画API没有关系,只是使用定时器来形成一个动画,因为这是动画的最记本实现方式。所以这个例子也是顺便演示一下定时器如何使用。
1.新建一个view-based Application.(在iOS5中是Single View Application)
2.加入一个小的图片,比如1.png,长和宽都不要大于100.
3.在viewcontroller.xib上面做如下布局
4.为它们增加相应的控制指针,并对两个button的touch up inside事件响应,最后形成的viewcontroller.h文件如下:
@interface tTimerAnimationViewController :
UIViewController {
NSTimer *aniTimer;
IBOutlet UIImageView *myIV;
IBOutlet UIButton *startButton;
IBOutlet UIButton *stopButton;
int directionDelta;
}
- (IBAction)stop:(id)sender;
- (IBAction)start:(id)sender;
- (void)timerFunc;
@end
5.下面是viewcontroller.m文件,
@implementation tTimerAnimationViewController
- (void)dealloc
{
[myIV
release];
[startButton
release];
[stopButton
release];
[aniTimer
invalidate];
[super
dealloc];
}
- (void)didReceiveMemoryWarning
{
// Releases the view if it doesn't have a superview.
[super
didReceiveMemoryWarning];
// Release any cached data, images, etc that aren't in use.
}
#pragma mark - View lifecycle
// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad
{
[super
viewDidLoad];
stopButton.enabled =
NO;
directionDelta = 2;
}
- (void)viewDidUnload
{
[myIV
release];
myIV = nil;
[startButton
release];
startButton = nil;
[stopButton
release];
stopButton = nil;
[super
viewDidUnload];
// Release any retained subviews of the main view.
// e.g. self.myOutlet = nil;
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
// Return YES for supported orientations
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
- (IBAction)stop:(id)sender {
startButton.enabled =
YES;
stopButton.enabled =
NO;
[aniTimer
invalidate];
aniTimer = nil;
}
- (IBAction)start:(id)sender {
startButton.enabled =
NO;
stopButton.enabled =
YES;
aniTimer = [NSTimer
scheduledTimerWithTimeInterval:0.01
target:self
selector:@selector(timerFunc)
userInfo:nil
repeats:YES];
}
- (void)timerFunc
{
CGPoint center = myIV.center;
if(center.y >450)
directionDelta = -2;
if(center.y <
30)
directionDelta = 2;
center.y +=
directionDelta;
myIV.center = center;
}
@end
6.解释如下:
aniTimer= [NSTimerscheduledTimerWithTimeInterval:0.01target:selfselector:@selector(timerFunc)userInfo:nilrepeats:YES];
上面的这句话启动一个定时器,每0.01秒调用一次,定时器触发的函数是self的timerFunc。userInfo是传入到timerFunc的参数,repeats是标识是否重复调用这个定时器。
相关代码在这里:
http://download.csdn.net/download/NickTang/3690782
分享到:
相关推荐
在window的qt creator平台上开发的,qt定时器的方法连续播放几幅图片看起来像动画,而且运行时外围的窗体都被透明化了,只有显示破壳而出的小鸡的动画,在你的桌面上随意拖动。
利用这一特性,我们可以将定时器调到恰当的时间,再结合QPixmap类就可以使一组图流畅地展示在人们面前,形成一个小动画。深入了解QPainter和QTimer的用法以后,可以自己制作出一个精美的艺术时钟。(包含两个项目,...
Java编写的显示器显示模式检测程序 2个目标文件 内容索引:JAVA源码,系统相关,系统信息检测 用JAVA编写了一个小工具,用于检测当前显示器也就是显卡的显示模式,比如分辨率,色彩以及刷新频率等。 Java波浪文字制作...
用JAVA编写了一个小工具,用于检测当前显示器也就是显卡的显示模式,比如分辨率,色彩以及刷新频率等。 Java波浪文字制作方法及源代码 1个目标文件 摘要:Java源码,初学实例,波浪文字 Java波浪文字,一个利用...
但它不仅仅只能做动画的,它是一个图形渲染和动画基础设施,可用于iOS和OS X,它的职责就是尽可能快地组合屏幕上不同的可视内容,这个内容是被分解成独立的图层,存储在一个叫做图层树的体系之中。于是这个树形成了...
用JAVA编写了一个小工具,用于检测当前显示器也就是显卡的显示模式,比如分辨率,色彩以及刷新频率等。 Java波浪文字制作方法及源代码 1个目标文件 摘要:Java源码,初学实例,波浪文字 Java波浪文字,一个利用...
用JAVA编写了一个小工具,用于检测当前显示器也就是显卡的显示模式,比如分辨率,色彩以及刷新频率等。 Java波浪文字制作方法及源代码 1个目标文件 摘要:Java源码,初学实例,波浪文字 Java波浪文字,一个利用...
用JAVA编写了一个小工具,用于检测当前显示器也就是显卡的显示模式,比如分辨率,色彩以及刷新频率等。 Java波浪文字制作方法及源代码 1个目标文件 摘要:Java源码,初学实例,波浪文字 Java波浪文字,一个利用...
用JAVA编写了一个小工具,用于检测当前显示器也就是显卡的显示模式,比如分辨率,色彩以及刷新频率等。 Java波浪文字制作方法及源代码 1个目标文件 摘要:Java源码,初学实例,波浪文字 Java波浪文字,一个利用...
Java编写的显示器显示模式检测程序 2个目标文件 内容索引:JAVA源码,系统相关,系统信息检测 用JAVA编写了一个小工具,用于检测当前显示器也就是显卡的显示模式,比如分辨率,色彩以及刷新频率等。 Java波浪文字制作...
Java编写的显示器显示模式检测程序 2个目标文件 内容索引:JAVA源码,系统相关,系统信息检测 用JAVA编写了一个小工具,用于检测当前显示器也就是显卡的显示模式,比如分辨率,色彩以及刷新频率等。 Java波浪文字制作...
程序说明: 渐变效果的原理就是利用定时器不断设置值,如果要减速效果就设置一个步长(详细看JavaScript 弹簧效果) 。 这里只是把能渐变的属性(透明度、宽、高、left、top)整合在一起,使用相同的渐变级数(Step...
摘要:VC/C++源码,图形处理,位图动画 ...VC++ 实现“静态”的BMP位图动画,形成类似GIF的帧动画,里面涉及一些定时器、BMP位图加载、创建兼容DC、激活开始按钮等相关功能。 运行环境:Windows/Visual C/C++
B 内置动态优化功能,可保证用户在访问一个窗口、鼠标动作等所产生的数据交互的快速 响应。 C 数据库支持远程访问重连及数据断点续传功能,使数据库之间的数据同步及完整性具有 了高可靠性的保障。 D 软件应内置的...