继承自 NSObject
符合 NSCoding
NSCopying
NSObject
框架  /System/Library/Frameworks/SpriteKit.framework
可用性 可用于iOS 7.0或者更晚的版本
声明于 SKKeyframeSequence.h
参考指南 Sprite Kit Progamming Guide

概览

重要提示:这是一个初步的API或者开发技术文档。虽然已经审阅了本文档的技术准确性,但是它不是最终的版本。本机密信息仅适用于苹果开发者计划的注册会员。苹果提供这些机密信息来帮助你采用这些技术和编程接口。此信息如果有变更,根据本文档实现的软件应使用操作系统软件和最终文档测试。新版本的文档可能会拥有新的API或者技术。

一个SKKeyframeSequence实例里面保存了粒子在每个关键帧中的值。粒子可以通过关键帧序列控制粒子的行为,替代粒子从自己的属性中取值。下面的表列出了一些必须存储在关键帧序列中的粒子属性。存储在同一个序列中的实例,必须属于同一个类。

发射器节点属性 类名
particleColorSequence SKColor
particleColorBlendFactorSequence 一个浮点值
particleScaleSequence 一个浮点值
particleAlphaSequence 一个浮点值
particleRatationSequence 一个浮点值

存储在序列中的时间值在0.0到1.0的范围内,0.0表示粒子刚刚被创建,1.0表示粒子消亡。你可以为粒子的整个生命周期提供一个关键帧的值,也可以只为部分生命周期提供。如果你选择了只覆盖粒子的部分生命周期,repeatMode属性,将告诉你如何确定一个范围外的时间值。

interpolationMode属性将告诉你如何计算两个两个关键帧之间的值。

方法

创建新的序列。

- initWithKeyframeValues:times:

通过一个初始的值和时间来初始化关键帧序列。

- (id)initWithKeyframeValues:(NSArray *)values times:(NSArray *)times

参数 values:一个保存关键帧序列值的数组
times:一个指定每个关键帧时间的数组
返回值 一个关键帧序列实例

论述

这两个数组的元素数量必须相同。新的关键帧序列将和数组元素的顺序相同。

- initWithCapacity

初始化一个新的关键帧序列。

- (id)initWithCapacity:(NSUInteger)numItems

参数 numItems:新序列的容量
返回值 一个空的关键帧序列实例

论述

这两个数组的元素数量必须相同。新的关键帧序列将和数组元素的顺序相同。

改变关键帧序列。

- addKeyframeValue:time:

为一个关键帧序列添加一个新的关键帧。

- (void)addKeyframeValue:(id)value time:(CGFloat)time

参数 value:添加到序列中的新值,必须以前面的类名相同
time:相应的时间
返回值 void

论述

一个新的关键帧将被添加到数组的末尾。

- removeKeyframeAtIndex:

从序列中删除一个关键帧。

- (void)removeKeyframeAtIndex:(NSUInteger)index

参数 index:需要删除的关键帧的数组下标
返回值 void
- removeLastKeyframe:

删除序列中的最后一个关键帧。

- (void)removeLastKeyframe

- setKeyframeTime:forIndex:

改变指定关键帧的时间。

- (void)setKeyframeTime:(CGFloat) time forIndex:(NSUInteger)index

参数 time:关键帧新的时间值
index:需要改变的关键帧的下标
返回值 void
- setKeyframeValue:forIndex:

改变指定关键帧的值。

- (void)setKeyframeValue:(id)value forIndex:(NSUInteger)index

参数 time:关键帧新的值
index:需要改变的关键帧的下标
返回值 void
- setKeyframeValue:Time:forIndex:

将序列中指定位置的关键帧替换为新的关键帧。

- (void)setKeyframeValue:(id)value time:(CGFloat)time forIndex:(NSUInteger)index

参数 value:新关键帧的值
time:新关键帧的时间
index:需要改变的关键帧的下标
返回值 void

获取序列中的一些信息。

- count

获取序列中关键帧的数量。

- (NSUInteger)count

参数  
返回值 关键帧的数量
- getKeyframeTimeForIndex

获取序列中某个关键帧的时间。

- (CGFloat)getKeyframeTimeForIndex:(NSUIteger)index

参数 index:关键帧的下标
返回值 关键帧的时间
- getKeyframeValueForIndex

获取序列中某个关键帧的值。

- (id)getKeyframeValueForIndex:(NSUIteger)index

参数 index:关键帧的下标
返回值 关键帧的值

对序列取样。

- sampleAtTime

计算特定时间的取样。

- (id)sampleAtTime:(CGFloat)time

参数 time:取样的时间值
返回值 一个包含插值的实例,实例类型与序列中的实例类型相同

属性

interpolationMode

这个属性用于决定如何计算两个关键帧之间的时间值。

@property(atomic) SKInterpolationMode interpolationMode

论述

详细值的定义参见本文档的常量部分,默认值为SKInterpolationModeLinear。

repeatMode

这个属性用于决定关键帧的重复方式。

@property(atomic) SKRepeatMode repeatMode

论述

详细值的定义参见本文档的常量部分,默认值为SKRepeatModeClamp。

常量

Interpolation Modes

两个关键帧之间插值的模式。

typedef NS_ENUM(NSInteger,

SKInterpolationMode){

SKInterpolationModeLinear = 1,

SKInterpolationModeSpline = 2,

SKInterpolationModeStep     = 3,

}

SKInterpolationModeLinear 插值模式是线性的
SKInterpolationModeSpline 差值模式是曲线的
SKInterpolationModeStep 不插值,值取自最近的关键帧
Repeat Modes

关键帧的重复模式。

typedef NS_ENUM(NSInteger,

SKRepeatMode){

SKRepeatModeClamp = 1,

SKRepeatModeLoop    = 2,

}

SKRepeatModeClamp 当取样计算时,取样的时间紧靠序列中发现的时间范围。例如,如果最后一个关键帧的时间为0.5,则在0.5到1.0时间范围内的任何取样都返回最后一个关键帧。
SKRepeatModeLoop 当取样计算时,序列循环回到序列的开头。例如,如果最后一个关键帧的时间为0.5,则在0.5到1.0时间范围内的任何取样和序列在0.0到0.5范围内的返回相同。

SKKeyframeSequence类的更多相关文章

  1. iOS -- SKKeyframeSequence类

    SKKeyframeSequence类 继承自 NSObject 符合 NSCodingNSCopyingNSObject 框架  /System/Library/Frameworks/SpriteK ...

  2. Java类的继承与多态特性-入门笔记

    相信对于继承和多态的概念性我就不在怎么解释啦!不管你是.Net还是Java面向对象编程都是比不缺少一堂课~~Net如此Java亦也有同样的思想成分包含其中. 继承,多态,封装是Java面向对象的3大特 ...

  3. iOS -- SKEmitterNode类

      SKEmitterNode类 继承自 SKNode:UIResponder:NSObject 符合 NSCoding(SKNode)NSCopying(SKNode)NSObject(NSObje ...

  4. C++ 可配置的类工厂

    项目中常用到工厂模式,工厂模式可以把创建对象的具体细节封装到Create函数中,减少重复代码,增强可读和可维护性.传统的工厂实现如下: class Widget { public: virtual i ...

  5. Android请求网络共通类——Hi_博客 Android App 开发笔记

    今天 ,来分享一下 ,一个博客App的开发过程,以前也没开发过这种类型App 的经验,求大神们轻点喷. 首先我们要创建一个Andriod 项目 因为要从网络请求数据所以我们先来一个请求网络的共通类. ...

  6. ASP.NET MVC with Entity Framework and CSS一书翻译系列文章之第二章:利用模型类创建视图、控制器和数据库

    在这一章中,我们将直接进入项目,并且为产品和分类添加一些基本的模型类.我们将在Entity Framework的代码优先模式下,利用这些模型类创建一个数据库.我们还将学习如何在代码中创建数据库上下文类 ...

  7. ASP.NET Core 折腾笔记二:自己写个完整的Cache缓存类来支持.NET Core

    背景: 1:.NET Core 已经没System.Web,也木有了HttpRuntime.Cache,因此,该空间下Cache也木有了. 2:.NET Core 有新的Memory Cache提供, ...

  8. .NET Core中间件的注册和管道的构建(2)---- 用UseMiddleware扩展方法注册中间件类

    .NET Core中间件的注册和管道的构建(2)---- 用UseMiddleware扩展方法注册中间件类 0x00 为什么要引入扩展方法 有的中间件功能比较简单,有的则比较复杂,并且依赖其它组件.除 ...

  9. Java基础Map接口+Collections工具类

    1.Map中我们主要讲两个接口 HashMap  与   LinkedHashMap (1)其中LinkedHashMap是有序的  怎么存怎么取出来 我们讲一下Map的增删改查功能: /* * Ma ...

随机推荐

  1. (转)ThinkPHP3.0 使用分组后路径访问无效的解决方法!

    注意,清除Runtime,就是清除缓存,很重要,妹的,调试了一下午,总是加上Home目录分组就找不到页面,直接放到action下就行,原来是缓存搞得鬼,另外要在入口文件开启‘APP_DEBUG’ 在T ...

  2. <body>标签,网页上显示的内容放在这里

    在网页上要展示出来的页面内容一定要放在body标签中.如下图是一个新闻文章的网页. 在浏览器中的显示效果: 示例: <!DOCTYPE HTML> <html> <hea ...

  3. XML约束

    XML约束--能够看懂约束内容,根据约束内容写出符合规则的xml文件. DTD约束 1)导入dtd方式 内部导入 <!DOCTYPE note [ <!ELEMENT note (to,f ...

  4. uvalive 5721 Activation (概率dp+方程)

    题目链接:http://vjudge.net/problem/viewProblem.action?id=24999 主要思想就是解方程的思想. 二维dp应该很容易想到,就是当前位置加队伍长度. dp ...

  5. 【USACO 2.3.1】最长前缀

    [题目描述] 在生物学中,一些生物的结构是用包含其要素的大写字母序列来表示的.生物学家对于把长的序列分解成较短的序列(即元素)很感兴趣. 如果一个集合 P 中的元素可以通过串联(元素可以重复使用,相当 ...

  6. [转]python集合set

    Python中集合set是基本数据类型的一种,它有可变集合(set)和不可变集合(frozenset)两种.创建集合set.集合set添加.集合删除.交集.并集.差集的操作都是非常实用的方法. 来源网 ...

  7. grails框架中读取txt文件内容将内容转换为json格式,出现异常Exception in thread "main" org.json.JSONException: A JSONObject text must begin with '{' at character 1 of [...]

    Exception in thread "main" org.json.JSONException: A JSONObject text must begin with '{' a ...

  8. java获取天气信息

    通过天气信息接口获取天气信息,首先要给项目导入程序所需要的包,具体需要如下几个包: json-lib-2.4.jar ezmorph-1.0.6.jar commons-beanutils-1.8.3 ...

  9. 【行为型】Strategy模式

    策略模式意图将解决问题的算法分别封装成一个个对象的形式,并使这些算法对象相互间可被替换.模式比较简单,对于策略对象结构的设计,可抽象一个抽象基类,并定义好相关算法(纯)虚接口,并由各种具体的实现算法子 ...

  10. SQL Server T-SQL高级查询1

    高级查询在数据库中用得是最频繁的,也是应用最广泛的. Ø 基本常用查询 --select select * from student;   --all 查询所有 select all sex from ...