六.plist的使用方法:

iOS的程序在安装在手机上以后会把全部资源文件集成在一个文件夹中,这种文件集合称为bundle,对于一般的工程,只有一个bundle,即mainbundle,因此可以通过bundle来获取文件的全路径,然后读取文件,下面的例子读取的是一个数组plist。

NSArray *dictArray = [NSArrayarrayWithContentsOfFile:[[NSBundlemainBundle]
pathForResource:@"questions.plist"ofType:nil]];

七.序列帧动画


类似于电影,将图片按顺序播放。

xcassets默认不支持jpg(新版本支持),可以放到Supporting Files。

对于尺寸,直接选择Size为3.5-inch也是320x480。

为了实现01 02这样的显示,用%02d,2表示占位数,前面表示用什么占位。

图片的文件名无论路径,直接写,老版本jpg要加拓展名,新版本可以省略。

ImageView有一系列的方法用于设置动画:infinite表示无尽的。

需要十分注意的是,animationImages接收的是UIImage元素。
如果文件名有前导0,通过%0Xd来实现,X个占位,不够的位数用0来补。
具体实现为:

NSMutableArray *array = [NSMutableArray array];

; i < ; i++){

NSString *file = [NSString stringWithFormat:@"drink_%02d.jpg",i];

UIImage *image = [UIImage imageNamed:file];

[array addObject:image];

}

self.tom.animationImages = array;

;

self.tom.animationDuration = array.count * 0.08;

[self.tom startAnimating];

需要注意的是,注意检查图片中间有无缺失的帧,动画加载如果出现nil帧会直接报错。

使用全路径来加载图片:

NSString *file = [NSString stringWithFormat:@"%@_%02d",actionname,i];

NSBundle *bundle = [NSBundle mainBundle];

NSString *path = [bundle pathForResource:file ofType:@"jpg"];

UIImage *image = [UIImage imageWithContentsOfFile:path];

这样加载图片,使用imageNamed方法会有缓存机制,不会被立即释放。所以使用imageWithContentsOfFile方法来加载全路径的图片,后者

没有缓存,注意是全路径(用Bundle)。

防止动画重复播放:if(self.xximageview.isAnimating) return;

一些小技巧:如果想让点击ImageView的不同部分产生不同的效果,可以通过放置隐藏按钮。

内存管理:动画播放完毕后清空内存中图片。

self.xximageview.animationImages = nil;

使用定时器来延迟销毁:

第一个参数为函数名,第二个为参数,第三个为延迟时间(秒)。

CGFloat delay = self.tom.animationDuration + 1.0;

[self performSelector:@selector(clearCache) withObject:nil afterDelay:delay];

小技巧,直接通过selector调用上面的内容:

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


重复代码的封装抽取:将相同的代码放到一个方法中,不同的值当做方法的参数传递。

(二)plist的使用和序列帧动画的更多相关文章

  1. cocostudio使用plist创建序列帧动画图片名称序列错乱的问题

    cocostudio 版本v2.2.9 用texturePacker将动画帧打包成一个plist和一张png,将plist拖入cocostudio中的资源栏中. 如图所示,plist里面的图片顺序是乱 ...

  2. 时光煮雨 Unity3D实现2D人物动画① UGUI&Native2D序列帧动画

    系列目录 [Unity3D基础]让物体动起来①--基于UGUI的鼠标点击移动 [Unity3D基础]让物体动起来②--UGUI鼠标点击逐帧移动 时光煮雨 Unity3D让物体动起来③—UGUI DoT ...

  3. cocos2d-x 2.0 序列帧动画 深入分析

    转自:http://blog.csdn.net/honghaier/article/details/8222401 序列帧动画主要有几个类: CCSpriteFrame:精灵帧信息,序列帧动画是依靠多 ...

  4. [Cocos2d-x v3.x]序列帧动画

      简单介绍 Cocos2d-x中.动画的详细内容是依靠精灵显示出来的,为了显示动态图片,我们须要不停切换精灵显示的内容.通过把静态的精灵变为动画播放器从而实现动画效果. 动画由帧组成,每一帧都是一个 ...

  5. unity shader序列帧动画代码,顺便吐槽一下unity shader系统

    一.看到UNITY论坛里有些人求unity shader序列帧动画,写shader我擅长啊,就顺势写了个CG的shader.代码很简单,就是变换UV采样序列帧贴图,美术配置行数列数以及变换速度. Sh ...

  6. iOS-动画效果(首尾式动画,代码快动画,核心动画,序列帧动画)

    一.各个动画的优缺点 1.首尾动画:如果只是修改空间的属性,使用首尾动画比较方便,如果在动画结束后做后续处理,就不是那么方面了. 2.核心动画:有点在于对后续的处理方便. 3.块动画: (1)在实际的 ...

  7. Unity3d的序列帧动画

    马上这星期就要过去了,为了完成每星期写一篇博客的目标,熬夜也要写完. 最近项目中用到了很多序列帧动画,之前看教程也接触过序列帧动画,但当时没用到,就没仔细研究,这次就借着这个机会好好总结一下序列帧动画 ...

  8. iOS开发基础-序列帧动画之Tom猫

    新建一个Single View Application,向该工程中导入Tom猫的图片资源,本示例演示Tom猫喝牛奶的动作.图片的名字为 drink_00.jpg.drink_01.jpg.....dr ...

  9. Unity Shader序列帧动画学习笔记

    Unity Shader序列帧动画学习笔记 关于无限播放序列帧动画的一点问题 在学shader的序列帧动画时,书上写了这样一段代码: fixed4 frag(v2f i){ // 获得整数时间 flo ...

随机推荐

  1. Linux 高性能服务器编程——I/O复用的高级应用

    高级应用一:非阻塞connect connect系统调用的man手册中有如下的一段内容: EINPROGRESS The socket is non-blocking and the connecti ...

  2. Android简易实战教程--第三十话《撕衣美女》

    此篇邪恶一些,给单身屌丝发点"福利",通过图片的绘制,给美女脱掉衣服. 原理:图片覆盖图片,通过画笔对顶端的图片做一些特效处理,即手指触摸的地方,设置为透明.即可显示最底部的美女图 ...

  3. 小米手机无法连接eclipse调试解决方案

    今天在做百度地图开发的时候,用genymotion调试一直出错,重启几次都是错的,后来我换成真机发现好了.当然我的小米3连接eclipse一直连不进去,折腾死我了,在网上查了很多资料,发现很多都不能用 ...

  4. JDBC编程-事务编程(四)

    事务的概念 事务的概念在我看来是指的是一组sql序列,这个序列是一块执行的单位,要么全部执行,要不全部执行,这样可以很好的对数据库进行并发控制. 因为数据库是多个用户都可以同时操作的,如果多个用户同时 ...

  5. shell的输入和输出

    1.echo    echo [option] string -e 解析转义字符 -n 回车不换行,linux系统默认回车换行 转移字符 \c \t \f \n #!/bin/bash #echo e ...

  6. 带你深入理解STL之List容器

    上一篇博客中介绍的vector和数组类似,它拥有一段连续的内存空间,并且起始地址不变,很好的支持了随机存取,但由于是连续空间,所以在中间进行插入.删除等操作时都造成了内存块的拷贝和移动,另外在内存空间 ...

  7. Python 自动刷博客浏览量

    哈哈,今天的话题有点那什么了哈.咱们应该秉承学习技术的角度来看,那么就开始今天的话题吧. 思路来源 今天很偶然的一个机会,听到别人在谈论现在的"刷量"行为,于是就激发了我的好奇心. ...

  8. Coroutine协同程序介绍(Unity3D开发之三)

    猴子原创,欢迎转载.转载请注明: 转载自Cocos2D开发网–Cocos2Dev.com,谢谢! 原文地址: http://www.cocos2dev.com/?p=496 Coroutine在Uni ...

  9. 1057. Stack (30) - 树状数组

    题目如下: Stack is one of the most fundamental data structures, which is based on the principle of Last ...

  10. svn 集成 redmine 账户验证的终极解决方案

    svn 集成 redmine 账户验证的终极解决方案 赖勇浩(http://laiyonghao.com) 动机 对于大部分开发团队来说,一般都需要一套 SCM 系统,通常是 svn + redmin ...