继承自 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. Linq101-Grouping Operators

    using System; using System.Collections.Generic; using System.Linq; namespace Linq101 { class Groupin ...

  2. 表达式:使用API创建表达式树(1)

    表达式树可使用Expressions类的静态工厂方法来创建.这种用API的方式创建给予我们在编程极大的灵活性,MSDN上关于表达式的例子也不少,但在使用过程中还是会遇到许多麻烦,对有的表达式类,介绍得 ...

  3. Asp.net 事务处理

    事务处理是在数据处理时经常遇到的问题,经常用到的方法有以下三种总结整理如下:方法1:直接写入到sql 中在存储过程中使用 BEGIN TRANS, COMMIT TRANS, ROLLBACK TRA ...

  4. TSQL Challenge 1

    在老外网站发布的一些SQL问题,拿过来自己搞一下,后面我也会陆续转载一些问题,欢迎看到的朋友贴出自己的答案,交流一哈.对于技术问答题的描述,翻译远不不原版来的更好一些,下面我就贴出原版的题目,欢迎参与 ...

  5. asp.net 图片质量压缩(不改变尺寸)

    private static ImageCodecInfo GetEncoderInfo(String mimeType) { int j; ImageCodecInfo[] encoders; en ...

  6. IntelliJ IDEA提示忽略大小写

    1.打开设置(CTRL+ALT+S) 2.搜索Code Completion,点击Case sensitive completion后面的选择框,选中None

  7. Linux 0.11下信号量的实现和应用

    Linux 011下信号量的实现和应用 生产者-消费者问题 实现信号量 信号量的代码实现 关于sem_wait和sem_post sem_wait和sem_post函数的代码实现 信号量的完整代码 实 ...

  8. 《JavaScript dom 编程艺术》 placeholder占位符IE8兼容办法。

    在<JavaScript dom 编程艺术>第11章学来的. 相对于用JavaScript替换文本框的提示语句 <!DOCTYPE html> <html lang=&q ...

  9. gulpfile的结构

    使用了      yargs     用于获取启动参数,针对不同参数,切换任务执行过程时需要,本项目中的useCache和useSess      path     不明,貌似是用来将某个目录中的文件 ...

  10. java Html2Image 实现html转图片功能

    //java Html2Image 实现html转图片功能 // html2image  HtmlImageGenerator imageGenerator = new HtmlImageGenera ...