六.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. Docker常见仓库Redis

    Redis 基本信息 Redis 是开源的内存 Key-Value 数据库实现. 该仓库提供了 Redis 2.6 ~ 2.8.9 各个版本的镜像. 使用方法 默认会在 6379 端口启动数据库. $ ...

  2. Java 求n天前的时间或者n月前的时间

    时间格式化 public static String DEFAULT_FORMATDATE = "yyyy-MM-dd"; 1.n天前的日期 /** * luyanlong * 默 ...

  3. JUnit单元测试教程(翻译自Java Code Geeks)

    JUnit单元测试教程--终极指南 JUnit单元测试教程终极指南 说明 单元测试简介 1 什么是单元测试 2 测试覆盖 3 Java中的单元测试 JUnit简介 1 使用Eclipse实现简单JUn ...

  4. SQL Server 虚拟化(2)——理想的SQL Server虚拟机架构

    本文属于SQL Server虚拟化系列 搭建SQL Server虚拟机,在各个组织之间都有自己的标准和最佳实践.从第一眼看去,光物理配置就有过百种,所有的这些细微差别都有可能为后续日常管理过程中故障侦 ...

  5. OpenResty和Resis一些基本的性能配置

    Basics: 1. Ensure that you have not disabled Lua code cache: https://github.com/openresty/lua-nginx- ...

  6. Oracle性能优化-读懂执行计划

    Oracle的执行计划 得到执行计划的方式 Autotrace例子 使用Explain explain plan set STATEMENT_ID='testplan' for select * fr ...

  7. 复杂和遗留的数据库schema

    本文作者:苏生米沿 本文地址:http://blog.csdn.net/sushengmiyan/article/details/50414652 In this chapter, we focus ...

  8. Git之(四)分支管理

    当我们初始化Git仓库的时候,Git会默认创建一个名为master的主分支.在实际工作中,主分支要求是一个稳定.健壮.安全的主线,一般不允许在主分支上直接进行开发,而是拉取一个新的分支,开发.测试完成 ...

  9. Android-Tab

    SmartTabLayout 我的地址:https://github.com/kongqw/Android-Tab 开源地址:https://github.com/ogaclejapan/SmartT ...

  10. solr界面

    1.1 界面功能介绍 1.1.1 Analysis