六.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. Bootstrap3 栅格系统-简介

    Bootstrap 提供了一套响应式.移动设备优先的流式栅格系统,随着屏幕或视口(viewport)尺寸的增加,系统会自动分为最多12列.它包含了易于使用的预定义类,还有强大的mixin 用于生成更具 ...

  2. Android Multimedia框架总结(十九)Camera2框架C/S模型之CameraService启动及与Client连接过程

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

  3. SQL Join各种内联外联说明

    Visual Representation of SQL Joins C.L. Moffatt, 3 Feb 2009 CPOL    4.96 (406 votes) Rate this: This ...

  4. windows curl命令详解

    概述 Curl命令可以通过命令行的方式,执行Http请求.在Elasticsearch中有使用的场景,因此这里研究下如何在windows下执行curl命令. 软件下载 下载地址:https://cur ...

  5. Struts1应用、实现简单计算器、使用DispatchAction、显示友好的报错信息、使用动态Form简化开发

    实现简单的支持加.减.乘.除的计算器 复制一份Struts1Demo修改:Struts1Calc 方案1: Struts1Calc 创建ActionForm: CalcForm extends Act ...

  6. 21 ViewPager RadioGroup

    结构 MainActivity.java package com.qf.day21_viewpagerfragmentrg_demo4; import java.util.ArrayList; imp ...

  7. Struts 1之DispatchAction

    DispatchAction是struts 1 的内置通用分发器 import org.apache.struts.actions.DispatchAction; public class UserA ...

  8. Dynamics CRM2013 停用默认公共视图

    CRM视图中一般只会有一个默认公共视图,如果你不想用已有的默认视图只需新建个视图再指定默认,然后将原有视图停用即可,但我碰到了个另类的问题,即在一个实体下同时存在两个默认视图而且无法停用. 如下图中的 ...

  9. Android时遇到R.java was modified manually! Reverting to generated version!

    欢迎关注公众号,每天推送Android技术文章,二维码如下:(可扫描) 进入 eclipse后clipse Menu >Projects > clean 这么做就把R文件删了,但是别担心, ...

  10. Windows上C语言实现设置控制台的颜色

    这里设置只要调用system();这个函数就行了,参数是字符串,想要设置终端的颜色,按照以下格式可以设置: //数字表示前景色,字母表示背景色 //color 0=黑色 1蓝色 2 绿色 3湖蓝色 4 ...