继承自 | 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范围内的返回相同。 |