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范围内的返回相同。 |
iOS -- SKKeyframeSequence类的更多相关文章
- IOS 公共类-MyDateUtil 日期处理Util
IOS 公共类-MyDateUtil 日期处理Util 此为处理日期的公共类.适用IOS6+ .h文件: #import <Foundation/Foundation.h> //适用 IO ...
- IOS 公共类-MyMBProgressUtil Progress显示
IOS 公共类-MyMBProgressUtil Progress显示 此公共类用于显示提示框,对MBProgress的进一步封装.可以看下面的代码 接口: @interface MyMBProgre ...
- 一位iOS教育类应用开发者是如何赚到60多万美元?
注:伯乐在线12月19日在@程序员的那些事 微博推荐了此文的英文原文,非常感谢@dotSlash 的翻译. 转眼距我写<我如何在iOS教育类应用中赚到20万美元>这篇博文已经一年多了,它 ...
- SKKeyframeSequence类
继承自 NSObject 符合 NSCodingNSCopyingNSObject 框架 /System/Library/Frameworks/SpriteKit.framework 可用性 可用于 ...
- iOS -- SKEmitterNode类
SKEmitterNode类 继承自 SKNode:UIResponder:NSObject 符合 NSCoding(SKNode)NSCopying(SKNode)NSObject(NSObje ...
- iOS系类教程之用instruments来检验你的app
比较了好多关于instruments 还是发现老外写的比较牛逼.于是果断翻译过来.有能力的的可以去看英文原版,鼓励大家看原版资料远离二手教程.这里是原文 入门 为了节省大家的时间,提供一个演示的D ...
- iOS方法类:CGAffineTransform的使用大概
CoreGraphics框架中的CGAffineTransform类可用于设定UIView的transform属性,控制视图的缩放.旋转和平移操作: 另称放射变换矩阵,可参照线性代数的矩阵实现方式0. ...
- 006 [翻译] Haneke(一个Swfit iOS缓存类)
Github项目地址:https://github.com/Haneke/HanekeSwift Haneke是一个用swift写成的轻量级iOS类,以简单好用著称(design-decisions- ...
- iOS 在类实现定义中声明成员变量的怪异方式
WebGL 规范(WebGL Specification) 太阳火神的漂亮人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致&quo ...
随机推荐
- 离线安装eclipse maven插件
最近用到maven,所以按照官网http://www.eclipse.org/m2e/的教程http://download.eclipse.org/technology/m2e/releases/,在 ...
- Java基础之封装
封装(Encapsulation)是java面向对象的三大特性,之前学java迷迷糊糊,一直也没弄清楚什么是封装以及为什么要封装,直到这次看书才有一种被点醒的感觉. java中的封装是针对某个类而言的 ...
- MySQL主从复制(Master-Slave)
MySQL数据库自身提供的主从复制功能可以方便的实现数据的多处自动备份,实现数据库的拓展.多个数据备份不仅可以加强数据的安全性,通过实现读写分离还能进一步提升数据库的负载性能. 下图就描述了一个多个数 ...
- ogre的初始化与启动以及显示对象设置
ogre的使用方法1---自动设置 1.ogre初始化:首先实例化一个Root对象 Root * root = new Root(); Root * root = new Root("plu ...
- Linux 安装 tree命令
通过yum在线安装tree包 yum install tree -y
- Uiautomator学习笔记(2) 封装代码 报错误(NllPointerException)
.NullPointerException: Attempt to invoke virtual method 'boolean qq.test.UiautomatorAssistant.ClickB ...
- [UnicodeEncodeError]:Django中解决URL中文解释乱码问题
Django中在使用HttpResponseRedirect的时候,跳转URL中如果存在中文,会报错:会报UnicodeEncodeError错误. 解决办法: 使用urlquote对URL进行编码 ...
- hdu3667
Transportation Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)To ...
- php hash防止表单
<?php /** * Created by PhpStorm. * User: brady * Desc: * Date: 2017/7/12 * Time: 15:01 */class te ...
- iOS学习笔记29-系统服务(二)通讯录
一.通讯录 iOS中的通讯录是存储在数据库中的,由于iOS的权限设计,开发人员是不允许直接访问通讯录数据库的,实现通讯录操作需要使用到AddressBook.framework框架. AddressB ...