`
sogotobj
  • 浏览: 654346 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

使用定时器,以及形成一个简单的动画。

 
阅读更多

本文档版权归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


分享到:
评论

相关推荐

    播放器等待界面使用定时器,GDI

    - 为了增加视觉效果,可以绘制一个旋转的箭头或图标,每次定时器触发时,稍微旋转角度,形成连续的旋转动画。 - 文本提示也是必不可少的,可以使用`TextOut`函数在界面上显示“正在加载”、“请稍候”等信息,提升...

    C#定时器之小浣熊

    在这个“C#定时器之小浣熊”的项目中,我们使用了图片框(PictureBox)控件和定时器来实现一个简单的动画效果,通过展示一系列小浣熊的图片,模拟小浣熊的动作,例如移动、跳跃等,让静态的图片产生动态的视觉体验。...

    用VC++编写的一个动态效果的简单动画

    在本项目中,"用VC++编写的一个动态效果的简单动画"是一个利用Microsoft Visual C++ (VC++)开发的计算机程序,其主要目的是展示一个动态的视觉效果:一个球体沿着锥形路径进行旋转。这个程序设计得具有用户友好的...

    JS Canvas定时器模拟动态加载动画

    本文主要探讨的是如何利用Canvas和定时器来模拟一个动态加载动画。这个动画展示了一个旋转的环形进度条,给人一种数据正在加载的感觉。 首先,HTML部分创建了一个`&lt;canvas&gt;`元素,设置了宽度和高度为500像素,并给...

    ios-一个简单的动画Demo,希望能给一些灵感.zip

    这个"ios-一个简单的动画Demo,希望能给一些灵感.zip"文件显然包含了关于如何创建视图动画的示例代码。在这个Demo中,开发者尝试模仿音乐声波震动的效果,这通常涉及到UIView动画的使用,特别是基于时间序列的动画。...

    QT连续显示多幅图片看起来像动画

    在这个场景中,我们使用`QTimer`每隔一定时间间隔(如每秒16帧,即60fps的1/4)触发一个事件,更新显示的图片,从而达到动画的效果。为了实现这一功能,可以创建一个`QTimer`实例,设置合适的定时间隔,并连接到一个...

    一个位图动画程序

    在本项目中,"一个播放连续位图成动画程序。(vc)" 提示我们这是一个使用Visual C++(简称VC)开发的程序。VC是Microsoft公司提供的一个集成开发环境,主要用于编写基于Windows操作系统的C++应用程序。这个程序设计...

    iOS仿小红书呼吸灯动画(核心动画和定时器)两种方式实现

    本文将深入探讨如何实现一个仿小红书标签的呼吸灯动画,主要通过两种不同的技术:定时器结合UIView动画和核心动画(Core Animation)的动画组。这两种方法都是利用动画来模拟物体随时间变化的视觉效果,从而达到呼吸...

    JQuery动画.pdf

    1. **单例定时器**:为了减少浏览器的负担,JQuery仅使用一个全局的定时器来管理所有的动画执行,而不是为每个动画单独创建定时器。这样做可以显著降低浏览器的性能消耗。 2. **队列管理**:通过队列机制确保动画...

    加载小图标实现简单动画

    在Windows编程中,实现简单的动画效果常常涉及到图标和定时器的使用。本主题将深入探讨如何利用`LoadIcon()`函数加载图标,并通过设置定时器来实现连续播放一系列图标,从而达到加载动画的效果。 首先,我们需要...

    易语言简单动画框按钮源码.7z

    在这个"易语言简单动画框按钮源码.7z"压缩包中,包含的是使用易语言编写的一个实现简单动画效果的按钮控件的源代码。下面我们将深入探讨易语言以及如何通过源码来理解并学习这种编程技术。 首先,易语言的设计理念...

    基于matlab的简单表情动画程序

    4. **显示动画**:最后,所有更新的图形将被绘制到同一个窗口,形成连续的动画效果。MATLAB的`drawnow`函数用于刷新图形窗口,确保观众看到的是最新的图像。 在标签“matlab 表情 动画”中,我们可以推测程序的核心...

    这是一个flash cs6制作的一个定时画圆的动画

    在本文中,我们将深入探讨如何使用Adobe Flash CS6和ActionScript 3.0(AS3.0)来创建一个定时画圆的动画。Flash CS6是Adobe公司开发的一款专业级的动画和交互式内容创作工具,而AS3.0则是其内置的编程语言,用于...

    Java 实现简单的动画

    在动画中,可以设置一个定时器,在指定间隔(如每秒)触发一个事件,这个事件可以是更新图形的状态或位置,从而实现动画的帧率控制。 5. **事件监听器**: 在Java GUI编程中,事件监听器允许程序响应用户的交互或...

    android广告滚动(利用动画)

    以下是一个简单的定时器使用示例: ```java Timer timer = new Timer(); timer.schedule(new TimerTask() { @Override public void run() { // 在这里启动位移动画 startAnimation(translationAnimation); } }...

    swift-iOS新浪微博红包加载动画

    这是一个关键帧动画,允许我们在特定的时间点设置动画的值,而不是简单地从一个值过渡到另一个值。在这个红包加载动画中,我们可以为每个小点创建一个CAKeyframeAnimation,设置其路径、速度和重复次数。 在实际...

    gif变成字符动画网页

    字符动画是通过选择特定的字符集(如ASCII字符),将每个像素或一组像素映射到一个字符,以形成类似图像的视觉效果。这通常涉及到色彩到字符的映射算法,比如根据像素亮度选择相应的字符,或者使用预定义的字符图案...

    Desktop.zip_matlab 动画_matlab动画_动画

    4. **plot函数的动态更新**:在MATLAB中,可以动态修改plot函数的参数,如XData和YData,来实现线条、点等对象的位置变化,形成动画效果。 5. **frame2im函数**:将当前的图形窗口状态转换为图像,用于保存动画帧...

    易语言简单动画框按钮

    在易语言中,可以使用定时器组件来控制动画的播放速度,每到一定时间间隔更新一次画面,形成连续的视觉效果。 4. **自定义控件**:如果系统提供的控件无法满足需求,我们可以创建自定义控件。自定义控件允许开发者...

    iOS 根据声波 曲线动画

    在iOS开发中,创建引人入胜的用户体验是至关重要的,而“iOS根据声波曲线动画”就是一个很好的示例,它结合了音频处理与动画效果,使得应用更加生动有趣。这个项目利用声波分贝峰值数据,通过贝塞尔曲线来绘制动画,...

Global site tag (gtag.js) - Google Analytics