[iOS基础控件-3.4]汤姆猫

王朝学院·作者佚名  2016-08-27
窄屏简体版  字體: 小  |  中  |  大  |  超大  

@import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.CSS);@import url(/css/cuteeditor.css);需求:

1.点击按钮播放相应动画

2.点击汤姆猫身体部分(头、脚、尾巴)显示动画

3.当前正在播放动画不可触发其他动画

4.优化缓存、内存管理

A.序列帧动画

#1. png格式的文件可以不带扩展名访问,而且可以放到”Images.scassets”的组中预览,jpg只能放到support file中了,而且访问的时候要写上扩展名

#2. 在ViewController中的属性栏可以设置storyboard模型的大小

#3. 拖入文件夹的时候要选择“Create Groups"才能正确引用,不要选择”Create Folder References"

1.Create groups for any added folders:把选择的文件添加到工程的group下,如果你选择的是文件,则把文件夹认为是group。他添加的文件夹对应的工程目录和文件路径不一定是一一对应的。你可以删除文件,可以把这个文件删除在工程外,也可以删除文件对应的本地文件。应该它生成的文件夹是黄色的。

2.Create folder references for any added folders:这种方法是建立一个文件夹的索引,同时文件夹中的所有文件也会添加到整个工程。他添加的文件夹对应的工程目录和文件路径是一一对应的。你要删除其中的文件的话可以直接到文件目录下把文件删除,然后再刷新一下目录,文件就会被删除了。这样添加文件夹的方法很方便,你在做cocos2d的工程时应该会经常用到。应该他生成的文件夹是蓝色的

#4. 整型占位符的0填充: %02d代表两位整型,高位不满的用0填充

1.动画执行方法

1self.tom.animationImages = images;//存储了多张组成动画的图片23[self.tom setAnimationRepeatCount:1];//默认0是无限次4[self.tom setAnimationDuration: images.count/FramesCount];5[self.tom startAnimating];

2.图片缓存机制&释放内存

a.使用 UIImage *image = [UIImage imageNamed:fileName];

会存储图片到混存,加载大量图片的时候会消耗大量内存

1//imageNamed: 有缓存2//UIImage *image = [UIImage imageNamed:fileName];34//imageWithContentOfFile: 没有缓存(传入文件的全路径)5NSBundle *bundle =[NSBundle mainBundle];6NSString *path =[bundle pathForResource:fileName ofType:nil];7UIImage *image = [UIImage imageWithContentsOfFile:path];

b.释放图片内存

[self.tom performSelector:@selector(setAnimationImages:) withObject:nil afterDelay:self.tom.animationDuration +1];

B.汤姆猫主要代码 (使用storyboard拖曳控件方式)

1#import"ViewController.h"23#defineFramesCount 24//动画帧数/秒45@interfaceViewController ()6@PRoperty (weak, nonatomic) IBOutlet UIImageView *tom;78-(IBAction)drink;9-(IBAction)knockHead;1011@end1213@implementationViewController1415- (void)viewDidLoad {16[super viewDidLoad];17//Do any additional setup after loading the view, typically from a nib.1819}2021- (void)didReceiveMemoryWarning {22[super didReceiveMemoryWarning];23//Dispose of any resources that can be recreated.24}2526/** 点击牛奶按钮*/27-(IBAction)drink {28[self runAnimationWithName:@"drink"andCount:80];29}3031/** 点击头部*/32//实质是在头部放置了一个不带文字的透明按钮33-(IBAction)knockHead {34[self runAnimationWithName:@"knockout"andCount:80];35}3637/** 运行相应动画*/38- (void) runAnimationWithName:(NSString *) animationName andCount:(int) count {39if(self.tom.isAnimating)return;4041NSMutableArray *images =[NSMutableArray array];42for(inti=0; i <= count; i++) {43NSString *fileName = [NSString stringWithFormat:@"%@_%02d.jpg", animationName, i];4445//imageNamed: 有缓存46//UIImage *image = [UIImage imageNamed:fileName];4748//imageWithContentOfFile: 没有缓存(传入文件的全路径)49NSBundle *bundle =[NSBundle mainBundle];50NSString *path =[bundle pathForResource:fileName ofType:nil];51UIImage *image =[UIImage imageWithContentsOfFile:path];5253[images addObject:image];54}5556self.tom.animationImages = images;//存储了多张组成动画的图片5758[self.tom setAnimationRepeatCount:1];//默认0是无限次59[self.tom setAnimationDuration: images.count/FramesCount];60[self.tom startAnimating];6162[self.tom performSelector:@selector(setAnimationImages:) withObject:nil afterDelay:self.tom.animationDuration +1];63}646566@end

C.文档注释

使用块注释就能在输入代码自动完成的时候显示注释

/** */

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航