目的:Tom猫是大家都熟悉的一款软件。点击Tom身上不同的位置,让它做出不同的反应。另外点击喂食等按钮做出相应的动作,代码尽量精简。

实现:在Tom身上根据区域设置多个Button,其Text Color属性设置为Clear Color。然后将多个Button设置不同的名字和Tag,将所有Button链接到run这个行为,在run方法中根据传入的butto Name和tag 条用函数调用函数播放动画。

由于博客限制图片的大小2M,所以生成的动画有些失真:

1.代码实现

// 根据参数不同,进行相应的操作
- (void)tomAnimation:(NSInteger)count andAct:(NSString *)act
{// 判断是否在动画,否的话执行动画if([self.imageView isAnimating]) return ;// 序列帧动画 -》顺序播放// 动画图片数组NSMutableArray *arraym = [NSMutableArray array];// 添加动画播放的图片for(int i = 0; i<count+1; i++){// 图像名称NSString *imageName = [NSString stringWithFormat:@"%@_%02d.jpg",act,i];
//        UIImage *image = [UIImage imageNamed:imageName];// 取出图片的全路径NSBundle *bundele = [NSBundle mainBundle];NSString *path = [bundele pathForResource:imageName ofType:nil];UIImage *image = [UIImage imageWithContentsOfFile:path];[arraym addObject:image];}self.imageView.animationImages = arraym;// 重复一次self.imageView.animationRepeatCount = 1;// 动画时长self.imageView.animationDuration = count * 0.07;// 开始动画[self.imageView startAnimating];// 动画结束,清空动画数组[self.imageView performSelector:@selector(setAnimationImages:) withObject:nil afterDelay:self.imageView.animationDuration];// 该函数后面还有一个inModes:参数,不删除的话,无效
}- (IBAction)run:(UIButton *)sender {// currentitle 按钮当前的名字[self tomAnimation:sender.tag andAct:sender.currentTitle];
}

2.总结

1.在使用运行中会调用大量的图片文件,如果全都放在Images.xcaddets 文件中会占用大量内存,所以都放在了Support Files中。并且apple禁止将.jpg格式的图片加载在该位置。

2.[self.imageView isAnimating] 对象方法,返回一个BOOL型值,判断一个动画是否在执行。

3. sender.currentTitle:用于取出button的名字。

4. 新建 一个可变的数组,然后将所需的图片名字放到该数组:

    // 动画图片数组NSMutableArray *arraym = [NSMutableArray array];// 添加动画播放的图片for(int i = 0; i<count+1; i++){// 图像名称NSString *imageName = [NSString stringWithFormat:@"%@_%02d.jpg",act,i];
// 取出图片的全路径NSBundle *bundele = [NSBundle mainBundle];NSString *path = [bundele pathForResource:imageName ofType:nil];UIImage *image = [UIImage imageWithContentsOfFile:path];[arraym addObject:image];

5.在完成动画之后清空动画指针:

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

6.

 <span style="white-space:pre"> </span>self.imageView.animationRepeatCount = 1;self.imageView.animationDuration = count * 0.07;
<span style="white-space:pre"> </span>[self.imageView startAnimating];
<span style="white-space:pre"> </span>animationRepeatCount:设置动画循环的次数。
<span style="white-space:pre"> </span>animationDuration:设置动画播放的时长。
<span style="white-space:pre"> </span>startAnimating:开始动画。

(在调试的时候多次出现错误提示:unrecognized selector sent to instance 0x7fbd9ac2bad0 最终发现由于开始时创建的行为未去掉,导致连线存在两个,而是方法中只有一个造成的,删除原来的连线后程序正常运行。)

3.Tom猫的实现(帧动画播放)相关推荐

  1. cocos2d+lua实现帧动画播放

    使用Cocos2d播放帧动画的方法有两种: 先来介绍一下流程: 1.得到动画的每一帧的数组FrameArray 2.将帧动画数组包装成Animation对象 3.将Animation对象转化为可以播放 ...

  2. CSS 帧动画 播放动画

    CSS3 帧动画 amimation @keyframes 在 CSS3 出现之前,动画都是通过 JavaScript 动态的改变元素的样式属性来完成了,这种方式虽然能够实现动画,但是在性能上存在一些 ...

  3. 自定义ImageView实现播放帧动画

    对于帧动画的显示有多种不同的实现方式,帧动画的图片有两种不同的情形,一种是多个单张图片,放在animation-list对应的xml里面,采用轮播的方式进行:另一种是一张大图片排列不同的小图片,之前实 ...

  4. 【FFH】Canvas实现帧动画及封装(OpenHarmony JS UI)

    目录C Demo展示 实现思路 代码封装 canvas绘制图像 动画播放 代码调用 Demo展示 这里以Tom猫(多年前热门的移动端互动小游戏)为例: 实现思路 首先要了解帧动画播放的原理--正如我们 ...

  5. UGUI 帧动画插件

    最近在开发一款功夫猫游戏,本来使用Unity Sprite制作,但是发现Sprite对各种分辨率不支持. 看着游戏很简单就使用UGUI制作,在中途发现有很多帧动画播放,使用了Animation调整使用 ...

  6. [Android动画] 帧动画-获取帧数( getNumberOfFrames)七

    2019独角兽企业重金招聘Python工程师标准>>> [功能说明]该方法用于获取动画的帧个数,也就是按照顺序播放了几张图片.该方法常常用于获取帧动画对象特性的场合. [基本语法]p ...

  7. 鸿蒙开发-新建Ability与使用image-animator实现图帧动画

    场景 鸿蒙开发-基础组件介绍及chart组件使用: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/118333539 在上面学习了 ...

  8. 0324的学习笔记----里面最重要的就是一个tom猫的动画,和涉及到的内存问题(创建imageview的两种方式,imagenamed就会形成缓存,占用很多内

    还是可以自己对着视频,或者自己有空的时候在做一遍,把按钮做全面的,比较有意思. 看视频的时间是:2015.11.2日上午. 0324: 01-作业-QQ登陆界面 (1) 键盘的退出:[self.vie ...

  9. 【iOS开发-45】Tom猫案例:动画、imageNamed与imageWithContentOfFile对内存影响、图片文件夹放哪儿以及文档注释

    今天tom猫案例效果: (1)最傻最笨的办法: --所有的点击都是按钮,只不过有6个有图标的按钮,有些头部.左右脚.肚子.尾巴那块也是一个按钮,只不过没背景没文字没边框的按钮用户按不到而已. --这里 ...

  10. Android 帧动画何时停止播放

    为什么80%的码农都做不了架构师?>>>    关于android帧动画没有提供结束播放的接口回调表示不理解,也许是基于播放动画的时候,系统在干其他事情,无法确切地保证动画在tota ...

最新文章

  1. ORA-01109:数据库无法启动问题
  2. App设计灵感之十二组精美的音乐播放器App设计案例
  3. [html] 写html代码时,如果缺少了结束标签,你如何检测及如何预防?
  4. MySQL闪回原理与实战
  5. Linux内核分析-week 1
  6. [转载] Python程序将十进制转换为二进制,八进制和十六进制
  7. 某大学校园网设计方案大学校园拓扑图 全解
  8. 效度不达标的处理方式
  9. 结巴分词 java_Java版结巴分词自定义词库
  10. python与人工智能:KNN近邻法识别手写数字
  11. 大学计算机课程ppt,北京大学计算机基础课程-PPT课件
  12. 三年白干!程序员因违反《竞业协议》赔偿腾讯 97.6 万元,返还 15.8 万元
  13. 剑指Offer——腾讯+360+搜狗校招笔试题+知识点总结
  14. context.getContentResolver().query()详细用法详解
  15. left join和right join
  16. 4.2.7-packet-tracer---configure-router-on-a-stick-inter-vlan-routing
  17. 苹果更新提示:已接入无线局域网却提示需要接入
  18. 《缠中说禅108课》2:没有庄家,有的只是赢家和输家
  19. 人脸识别api_使用人脸识别API的人脸识别
  20. ubuntu16.04+cuda10.1安装opencv-3.3.0

热门文章

  1. 服务器返回json中显示403,接口返回了403错误如何解决?
  2. 秘密打印机涉密计算机之间,涉密打印机与涉密计算机之间采用什么方式
  3. Android 动画系列二之补间动画
  4. C语言————鸡兔共有30只,脚共有90只,下面的程序段是计算鸡和兔共有多少只?
  5. GoldenDict启动进入后台 Ubuntu
  6. 【概率论】二项分布 Binomial Distribution
  7. TestCenter测试管理工具功能详解十六(U)
  8. 最新!2016中国城市GDP排名出炉
  9. 前端实战:教你写出简单的侧边栏功能以及返回顶部特效
  10. Barefoot P4加速SDN