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范围内的返回相同。 |
SKKeyframeSequence类的更多相关文章
- iOS -- SKKeyframeSequence类
SKKeyframeSequence类 继承自 NSObject 符合 NSCodingNSCopyingNSObject 框架 /System/Library/Frameworks/SpriteK ...
- Java类的继承与多态特性-入门笔记
相信对于继承和多态的概念性我就不在怎么解释啦!不管你是.Net还是Java面向对象编程都是比不缺少一堂课~~Net如此Java亦也有同样的思想成分包含其中. 继承,多态,封装是Java面向对象的3大特 ...
- iOS -- SKEmitterNode类
SKEmitterNode类 继承自 SKNode:UIResponder:NSObject 符合 NSCoding(SKNode)NSCopying(SKNode)NSObject(NSObje ...
- C++ 可配置的类工厂
项目中常用到工厂模式,工厂模式可以把创建对象的具体细节封装到Create函数中,减少重复代码,增强可读和可维护性.传统的工厂实现如下: class Widget { public: virtual i ...
- Android请求网络共通类——Hi_博客 Android App 开发笔记
今天 ,来分享一下 ,一个博客App的开发过程,以前也没开发过这种类型App 的经验,求大神们轻点喷. 首先我们要创建一个Andriod 项目 因为要从网络请求数据所以我们先来一个请求网络的共通类. ...
- ASP.NET MVC with Entity Framework and CSS一书翻译系列文章之第二章:利用模型类创建视图、控制器和数据库
在这一章中,我们将直接进入项目,并且为产品和分类添加一些基本的模型类.我们将在Entity Framework的代码优先模式下,利用这些模型类创建一个数据库.我们还将学习如何在代码中创建数据库上下文类 ...
- ASP.NET Core 折腾笔记二:自己写个完整的Cache缓存类来支持.NET Core
背景: 1:.NET Core 已经没System.Web,也木有了HttpRuntime.Cache,因此,该空间下Cache也木有了. 2:.NET Core 有新的Memory Cache提供, ...
- .NET Core中间件的注册和管道的构建(2)---- 用UseMiddleware扩展方法注册中间件类
.NET Core中间件的注册和管道的构建(2)---- 用UseMiddleware扩展方法注册中间件类 0x00 为什么要引入扩展方法 有的中间件功能比较简单,有的则比较复杂,并且依赖其它组件.除 ...
- Java基础Map接口+Collections工具类
1.Map中我们主要讲两个接口 HashMap 与 LinkedHashMap (1)其中LinkedHashMap是有序的 怎么存怎么取出来 我们讲一下Map的增删改查功能: /* * Ma ...
随机推荐
- springmvc常见注解模式
常用注解元素 @Controller 标注在Bean的类定义处 @RequestMapping 真正让Bean具备 Spring MVC Controller 功能的是 @RequestMapping ...
- My.Ioc 的性能
IoC/DI 这个概念,最初是由 Martin Fowler 提出来的.之后,很快在 Java 社区大行其道.在 .net 社区,IoC 的流行要比 Java 晚一些.尽管如此,现在开源社区中也已经出 ...
- Ext.ComponentQuery.query()
转载:http://blog.csdn.net/jiushuai/article/details/7938476 用来找特点的所有容器(Ext.container.Container)或是通过Ext. ...
- Mac OS X 10.9 Mavericks 修改root密码
Mac10.9忘记密码后有两种方式可以进去: 代码如下 复制代码 1.sudo passwd 重新输入密码即可,此方法修改了root的密码 代码如下 复制代码 2.sudo bash 输入当前用户 ...
- 关于mtk Android打开串口权限问题
最近在做一个测试串口读写回路的APK,jni代码部分遇到一个小小问题: fd = open(path_utf, O_RDWR);返回值是-1,要么就是权限问题,要么就是文件不存在所以需要打印错误信息, ...
- C#设置IP地址,启用禁用适配器
界面效果图如下: 报表界面 说下关键代码 需要开启 Windows Management Instrumentation服务(默认已经开启),在程序中需要增加 Management引用. 主要有Net ...
- MapReduce中的排序
hadoop的计算模型就是map/reduce,每一个计算任务会被分割成很多互不依赖的map/reduce计算单元,将所有的计算单元执行完毕后整个计算任务就完成了.因为计算单元之间互不依 ...
- PL/SQL设置关键字大写
Tools->Preferences->User Interface->Keyword case = Uppercase,就设置为大写了.
- curl 解析
获得页面 使用命令:curl http://curl.haxx. se 这是最简单的使用方法.用这个命令获得了http://curl.haxx. se指向的页面,同样,如果这里的URL指向的是一个文件 ...
- 探究Android中Listview显示错乱问题
问题 最近在项目中遇到过一个很棘手的问题,就是ListView在滑动后就莫名其妙的显示错乱,网上查阅资料后问题很容易的就解决了,但是对于问题产生的原因仍是一知半解,所以不甘心的我定下心来,狠读源码,终 ...