六.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. MongoDB 自动增长

    MongoDB 没有像 SQL 一样有自动增长的功能, MongoDB 的 _id 是系统自动生成的12字节唯一标识. 但在某些情况下,我们可能需要实现 ObjectId 自动增长功能. 由于 Mon ...

  2. PHP 5 Timezones

    PHP 支持的时区 下面是 PHP 支持的时区的完整列表,这些对一些 PHP 日期函数很有用. 非洲 美洲 南极洲 北冰洋 亚洲 大西洋 大洋洲 欧洲 印度洋 太平洋 非洲 Africa/Abidja ...

  3. Android Multimedia框架总结(十一)CodeC部分之AwesomePlayer到OMX服务

    转载请把头部出处链接和尾部二维码一起转载,本文出自逆流的鱼yuiop:http://blog.csdn.net/hejjunlin/article/details/52623882 前言:上篇文< ...

  4. 22 Notification 通知栏代码

    结构图: MainActivity.java package com.qf.day22_notification; import android.app.Activity; import androi ...

  5. 关于Lt分发系统的时序图分析

    我们已经知道,系统共分为两个模块,mather与son 同时系统允许的操作也有三种,向mather提交war包,我某个服务器更新代码,为所有服务器更新代码 我们一个一个来看 先说,向mather提交w ...

  6. FFmpeg源代码简单分析:libswscale的sws_getContext()

    ===================================================== FFmpeg的库函数源代码分析文章列表: [架构图] FFmpeg源代码结构图 - 解码 F ...

  7. IDEA阅读Spark源码

    将spark编译成idea-sbt工程 tar -zxvf spark-1.1.0.tgz cd spark-1.1.0 sbt/sbt gen-idea 等待-- 成功后就能以SBT工程的形式导入i ...

  8. springMVC源码分析--容器初始化(一)ContextLoaderListener

    在spring Web中,需要初始化IOC容器,用于存放我们注入的各种对象.当tomcat启动时首先会初始化一个web对应的IOC容器,用于初始化和注入各种我们在web运行过程中需要的对象.当tomc ...

  9. 关于大数据时代传统商业存储的思考: 中心存储 VS 分布式存储

    尊重原创,转载请注明出处:http://anzhan.me ; http://blog.csdn.net/anzhsoft 今天和我们部门的老大1*1, 大家面对面沟通了一下到新的项目组的想法.而且也 ...

  10. smack4中文文档

    smack4中文文档 基于samck官方最新文档翻译而成,适用于最新的Smack4.x 简介 6月毕业后来到帝都上班,找了一份Android开发的工作,公司开发的APP需要使用XMPP和Smack进行 ...