继承自 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. JS 点击事件失效

    有时候,会发现js失效 ,代码如果是如下的时候 <input type="button" onclick="change()"value="変更 ...

  2. android - 模拟器连接本地tomcat

    在使用android真机试图连接本地的tomcat的时候,发现一直没有反应.网上搜了很多资料,加上自己不断测试,后来发现模拟器访问tomcat的时候,ip的概念跟在pc上访问tomcat用的ip,根本 ...

  3. sql server identity限制

    identity属性是依赖于表的,它不是一种独立的序列机制,不能随意使用它生成新值. 标识值是在insert语句执行时生成的,不是在执行之前生成的. identity属性是以异步的方式分配标识值.这意 ...

  4. VS2012 ActiveX控件_D接口添加方法事项

    自己写的是Clock控件,所以控件的接口是_DClock 使用向导添加方法后,会在紫色区域自动生成红色代码:(添加Hello方法) dispinterface _DClock { properties ...

  5. Javascript深度克隆一个对象

    Javascript中的对像赋值与Java中是一样的,都为引用传递.就是说,在把一个对像赋值给一个变量时,那么这个变量所指向的仍就是原来对 像的地址.那怎么来做呢?答案是“克隆”. 克隆有两种方法:一 ...

  6. ASP.NET中实现页面间数据传递的方法

    说到页面间数据传递,很多人都会想到通过像Session这样的全局变量,但是向Session中添加的东西太多会增加服务器的压力,页面间数据传递,数据的作用范围越小越好.   ASP.NET页面间数据传递 ...

  7. core文件生成总结

    1.确定系统支持生成core dump文件 ulimit -c    如果返回0, 可以ulimit -c unlimited 设定 2.kill 加上信号量, kill 信号如下 信号 信号值 功能 ...

  8. UVa 673 Parentheses Balance(栈的使用)

     栈 Time Limit:3000MS     Memory Limit:0KB     64bit IO Format:%lld & %llu   Description You are ...

  9. UVa 10935 - Throwing cards away I (队列问题)

    原题 Throwing cards away I   Given is an ordered deck of n cards numbered 1 to n with card 1 at the to ...

  10. 在win8.1 64位环境下有关Oracle的安装和卸载

    1,Oracle安装 3 注意:在win8.1环境下安装64位的oracle客户端,注意配置是1g的 2.Oracle的卸载:http://jingyan.baidu.com/article/f7ff ...