zoukankan      html  css  js  c++  java
  • iOS -- SKKeyframeSequence类

    继承自 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范围内的返回相同。
  • 相关阅读:
    输入法searchLookUpEditd的使用
    DevExpress GridControl使用方法总结
    DevExpress 控件中GridControl的使用
    MSSQl 事务的使用
    Python class NameError name "xxx" is not defined
    win 10 slmgr.vbs -xpr 无法运行,被豆麦笔记打开解决方法
    git checkout 撤销多个文件,撤销整个文件夹
    Python argparse 模块,参数传递
    Python Enum 枚举 用法汇总
    git branch & checkout fetch 的使用和冲突解决
  • 原文地址:https://www.cnblogs.com/mafeng/p/7561863.html
Copyright © 2011-2022 走看看