iOS -- SKEmitterNode类
SKEmitterNode类
| 继承自 | SKNode:UIResponder:NSObject |
| 符合 | NSCoding(SKNode) NSCopying(SKNode) NSObject(NSObject) |
| 框架 | /System/Library/Frameworks/SpriteKit.framework |
| 可用性 | 可用于iOS 7.0或者更晚的版本 |
| 声明于 | SKEmitterNode.h |
| 参考指南 | Sprite Kit Progamming Guide |
概览
| 重要提示:这是一个初步的API或者开发技术文档。虽然已经审阅了本文档的技术准确性,但是它不是最终的版本。本机密信息仅适用于苹果开发者计划的注册会员。苹果提供这些机密信息来帮助你采用这些技术和编程接口。此信息如果有变更,根据本文档实现的软件应使用操作系统软件和最终文档测试。新版本的文档可能会拥有新的API或者技术。 |
一个SKEmitterNode实例,是一个自动创建和渲染粒子的节点。粒子有点类似于节点,但是它不能像节点那样访问方法,也不能给它关联上动作。粒子发射器经常被用于创建烟雾,雨,火花等粒子效果。
一个粒子是一个被混合后添加到帧缓冲区的节点,这个节点有质感和颜色。当你配置一个粒子发射器的时候,你需要设置粒子的生产速率以及每个粒子的属性。这些粒子有以下的属性:
| 粒子的位置 |
| 粒子的速度 |
| 粒子的旋转和缩放量 |
| 粒子的颜色以及混合粒子纹理的混合因子 |
| 粒子的alpha值和混合模式 |
| 粒子的生命周期 |
对于每一个属性,你需要配置一个平均的初始值,以及一个值域。粒子发射器会在值域内选择一个随机值。
有一些属性还允许你指定一个速度,或者加速度属性,以便于在粒子的生命周期内修改粒子属性的值。例如,粒子发射器创建了一些粒子,并将这些粒子的alpha值初始为1.0,alpha值的变换速度初始为-0.2,这样的话,这些粒子的alpha值将在5秒内,从1.0变为0.0,也就是说粒子从创建开始到消失,一共花了5秒。你可以使用关键帧序列来实现一些更为复杂的粒子变换。
当粒子创建好之后需要确定的事项
实例方法
| - advanceSimulationTime: |
促进发射器粒子仿真。
- (void)advanceSimulationTime:(NSTimeInterval)sec
| 参数 | sec:粒子仿真所需秒数 |
| 返回值 | void |
论述
一个粒子发射器一旦添加到场景中,将自动的在新的动画帧里创建新的粒子。这个方法允许你人为地促进粒子仿真,使他可以生成新的粒子以及推进现有的粒子。这个方法通常的用法是,通过一个首次添加到场景中的粒子,来预填充粒子发射器节点。
| - resetSimulation |
移除所有已经存在的粒子,并重新启用粒子仿真。
- (void)resetSimulation
论述
重置粒子仿真,清楚粒子仿真的内部状态。
属性
| particleBirthRate |
粒子生产速率。
@property (atomic) CGFloat particleBirthRate
论述
粒子每秒钟产生的数量,默认值为0.0。
| numParticleToEmit |
粒子发射器在停止前需要发射的粒子数量。
@property (atomic) NSUInteger numParticleToEmit
论述
默认值为0,表示粒子发射器将无限发射粒子。如果提供一个非零的值,发射器将发射指定数量的粒子,然后停止。
决定发射粒子的节点
| targetNode |
渲染粒子的目标节点。
@property (atomic, weak) SKNode *targetNode
论述
默认值为nil,这种情况下,粒子就相当于是粒子发射节点的子节点。在未来的帧动画中,粒子的位置将受粒子节点的属性的影响。如果你另外指定一个目标节点,新产生的粒子将受粒子发射器的影响,而其他的粒子则受你指定的那个目标节点的影响。
例如,假设你有一个粒子发射器节点,这个节点是场景节点的子节点,这个节点绕着Z轴旋转。发射器节点的行为将根据目标节点的值来改变。
| 如果targetNode属性为nil,那么粒子的位置只受发射器节点影响。 |
| 如果目标节点指向发射器节点,新产生的粒子随着发射器改变,以前产生的粒子随着目标节点改变。 |
添加到场景中的粒子,将不受发射器的控制而独立的运动。
决定一个粒子的生命周期。
| particleLifetime |
粒子的平均生命周期,以秒为单位。
@property (atomic) CGFloat particleLifetime
论述
默认值为0.0。
| particleLifetimeRange |
粒子的生命周期,这个值是一个允许的值域范围内的随机值。
@property (atomic) CGFloat particleLifetimeRange
论述
默认值为0.0。如果值为非零的时候,每个粒子的生命周期是一个随机的值,这个值可能在值域的一半左右浮动。
决定一个粒子的初始位置。
| particlePosition |
粒子的平均初始位置。
@property (atomic) CGPoint particlePosition
论述
默认值为(0.0,0.0)。
| particlePositionRange |
粒子的初始位置,这个值是一个允许的值域范围内的随机值。
@property (atomic) CGPoint particlePositionRange
论述
默认值为(0.0,0.0)。如果值为非零的时候,每个粒子的位置是一个随机的值,这个值可能在值域的一半左右浮动。
| particleZPosition |
粒子的平均初始深度。
@property (atomic) CGFloat particleZPosition
论述
默认值为0.0。
| particleZPositionRange |
粒子的初始深度,这个值是一个允许的值域范围内的随机值。
@property (atomic) CGFloat particleZPositionRange
论述
粒子的初始深度,如果值为非零的时候,每个粒子的位置是一个随机的值,这个值可能在值域的一半左右浮动。
决定一个粒子的速度和加速度。
| particleSpeed |
粒子的平均初始速度。
@property (atomic) CGFloat particleSpeed
论述
默认值为0.0。
| particleSpeedRange |
粒子的初始速度,这个值是一个允许的值域范围内的随机值。
@property (atomic) CGFloat particleSpeedRange
论述
默认值为0.0。如果值为非零的时候,每个粒子的速度是一个随机的值,这个值可能在值域的一半左右浮动。
| emissionAngle |
粒子的平均初始方向,以弧度表示。
@property (atomic) CGFloat emissionAngle
论述
默认值为0.0。
| emissionAngleRange |
粒子的初始方向,这个值是一个允许的值域范围内的随机值,以弧度表示。
@property (atomic) CGFloat emissionAngle
论述
默认值为0.0。如果值为非零的时候,每个粒子的速度是一个随机的值,这个值可能在值域的一半左右浮动。
| xAcceleration |
粒子的水平加速度。
@property (atomic) CGFloat xAccleration
论述
这个属性在模拟风、重力等效果的时候非常有用。它是平均作用在所有的粒子上面的。默认值为0.0。
| yAcceleration |
粒子的垂直加速度。
@property (atomic) CGFloat yAccleration
论述
这个属性在模拟风、重力等效果的时候非常有用。它是平均作用在所有的粒子上面的。默认值为0.0。
决定一个粒子的旋转。
| particleRatation |
粒子的平均初始旋转,以弧度为单位。
@property (atomic) CGFloat particleRatation
论述
默认值为0.0。
| particleRatationRange |
粒子的初始旋转,这个值是一个允许的值域范围内的随机值,以弧度为单位。
@property (atomic) CGFloat particleRatationRange
论述
默认值为0.0。如果值为非零的时候,每个粒子的旋转是一个随机的值,这个值可能在值域的一半左右浮动。
| particleRatationSpeed |
粒子的旋转速度,以弧度每秒为单位。
@property (atomic) CGFloat particleRatationSpeed
论述
默认值为0.0。它作用于所有粒子,默认值为0.0。
决定一个粒子的缩放因子。
| particleScaleSequence |
一个缩放序列,用于指定粒子的缩放因子。
@property (atomic) SKKeyframeSequence particleScaleSequence
论述
默认值为nil。如果值为非零的时候,particleScale属性,particleScaleRange属性和particleScaleSpeed属性将被忽略。这时候用这个缩放序列来指定粒子的缩放因子。
| particleScale |
粒子的平均缩放因子。
@property (atomic) CGFloat particleScale
论述
默认值为1.0。
| particleScaleRange |
粒子的缩放因子,这个值是一个允许的值域范围内的随机值。
@property (atomic) CGFloat particleScaleRange
论述
默认值为0.0。如果值为非零的时候,每个粒子的缩放因子是一个随机的值,这个值可能在值域的一半左右浮动。
| particleScaleSpeed |
粒子的缩放速度。
@property (atomic) CGFloat particleScaleSpeed
论述
默认值为0.0。
设置粒子的纹理和大小。
| particleTexture |
粒子渲染的纹理。
@property (atomic, retain) SKTexture *particleTexture
论述
一个粒子的渲染就类似于一个精灵的渲染。这个属性的默认值为nil,这表示渲染的就是一个带有颜色的矩形。如果是一个非零的值,将会用一个彩色的纹理渲染粒子。
| particleSize |
每个粒子的初始大小。
@property (atomic) CGSize particleSize
论述
默认值为CGSizeZero。如果使用默认值,粒子的大小将会根据纹理的大小来决定。如果粒子还没有纹理,你必须给粒子的大小赋上一个非空的值。
配置粒子的颜色。
| particleColorSequence |
一个颜色序列,用于指定粒子的颜色。
@property (atomic) SKKeyframeSequence *particleColorSequence
论述
默认值为nil。如果该属性为一个非空的值,则particleColor属性,particleColorAlphaRange属性,particleColorRedRange属性,particleColorGreenRange属性,particleColorBlueRange属性,particleColorAlphaSpeed属性,particleColorRedSpeed属性,particleColorGreenSpeed属性,particleColorBlueSpeed属性将被忽略,粒子将通过颜色序列来指定粒子颜色。
| particleColor |
一个粒子的平均初始颜色。
@property (atomic, retain) SKColor *particleColor
论述
默认值为[SKColor clearColor]。一个粒子的颜色通过一个混合因子与纹理混合。具体参见“决定如何混合粒子颜色和纹理”部分。
| particleColorAlphaRange |
粒子颜色的初始alpha值,这个值是一个允许的值域范围内的随机值。
@property (atomic) CGFloat particleColorAlphaRange
论述
默认值为0.0。如果值为非零的时候,每个粒子的初始alpha值是一个随机的值,这个值可能在值域的一半左右浮动。
| particleColoBlueRange |
粒子颜色的初始蓝色的值,这个值是一个允许的值域范围内的随机值。
@property (atomic) CGFloat particleColoBlueRange
论述
默认值为0.0。如果值为非零的时候,每个粒子的初始蓝色值是一个随机的值,这个值可能在值域的一半左右浮动。
| particleColoGreenRange |
粒子颜色的初始绿色的值,这个值是一个允许的值域范围内的随机值。
@property (atomic) CGFloat particleColoGreenRange
论述
默认值为0.0。如果值为非零的时候,每个粒子的初始绿色值是一个随机的值,这个值可能在值域的一半左右浮动。
| particleColoRedRange |
粒子颜色的初始红色的值,这个值是一个允许的值域范围内的随机值。
@property (atomic) CGFloat particleColoRedRange
论述
默认值为0.0。如果值为非零的时候,每个粒子的初始红色值是一个随机的值,这个值可能在值域的一半左右浮动。
| particleColoAlphaSpeed |
粒子alpha值的变化速度。
@property (atomic) CGFloat particleColoAlphaSpeed
论述
默认值为0.0。
| particleColoBlueSpeed |
粒子蓝色值的变化速度。
@property (atomic) CGFloat particleColoBlueSpeed
论述
默认值为0.0。
| particleColoGreenSpeed |
粒子绿色值的变化速度。
@property (atomic) CGFloat particleColoGreenSpeed
论述
默认值为0.0。
| particleColoRedSpeed |
粒子红色值的变化速度。
@property (atomic) CGFloat particleColoRedSpeed
论述
默认值为0.0。
决定如何混合粒子的颜色和纹理。
| particleColoBlendFactorSequence |
一个混合因子序列,用于混合粒子的颜色和纹理。
@property (atomic) SKKeyframeSequence *particleColoBlendFactorSequence
论述
默认值为0.0。如果该属性为一个非空的值,则particleColorBlendFactor属性,particleColorBlendFactorRange属性和particleColorBlendFactorSpeed属性将被忽略。粒子将通过混合因子序列来混合粒子的颜色和纹理。
| particleColoBlendFactor |
一个平均的初始值,用做颜色混合因子。
@property (atomic) CGFloat particleColoBlendFactor
论述
默认值为0.0,这表示使用纹理,忽略粒子颜色。如果该值为非零,则表示粒子的纹理将与颜色混合。
| particleColoBlendFactorRange |
一个初始值,用做颜色混合因子。这个值是一个允许的值域范围内的随机值。
@property (atomic) CGFloat particleColoBlendFactorRange
论述
默认值为0.0,如果值为非零的时候,每个粒子的颜色的混合因子是一个随机的值,这个值可能在值域的一半左右浮动。
| particleColoBlendFactorSpeed |
粒子的混合因子变化的速度。
@property (atomic) CGFloat particleColoBlendFactorSpeed
论述
默认值为0.0。
在帧缓冲区混合粒子。
| particleBlendMode |
混合粒子的模式。
@property (atomic) SKBlendMode particleBlendMode
论述
默认值为SKBlendModeAlpha。
| particleAlphaSequence |
一个alpha序列,用于指定粒子的alpha值。
@property (atomic) SKKeyframeSequence *particleAlphaSequence
论述
默认值为nil。如果值为非空,则particleAlpha属性,particleAlphaRange属性,particleAlphaSpeed属性将被忽略。粒子将通过alpha序列来改变粒子的alpha值。
| particleAlpha |
粒子的平均初始alpha值。
@property (atomic) CGFloat particleAlpha
论述
粒子的alpha属性相当于节点的alpha属性。粒子的颜色alpha值等于粒子颜色和纹理的混合状态乘以粒子的alpha值。然后粒子的颜色将在帧缓冲区混合。默认值为1.0。
| particleAlphaRange |
粒子的alpha值,这个值是一个允许的值域范围内的随机值。
@property (atomic) CGFloat particleAlphaRange
论述
默认值为0.0。如果值为非零的时候,每个粒子的alpha值是一个随机的值,这个值可能在值域的一半左右浮动。
| particleAlphaSpeed |
粒子的alpha值变化速度。
@property (atomic) CGFloat particleAlphaSpeed
论述
默认值为0.0。
为粒子添加动作。
| particleAction |
为新粒子指定一个动作。
@property (atomic, copy) SKAciton *particleAction
论述
为粒子添加复杂的动作,将严重影响粒子发射器的性能。因为粒子不是一个你可以直接操作的节点。你不能在以添加动作的粒子里面删除动作。
iOS -- SKEmitterNode类的更多相关文章
- 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万美元>这篇博文已经一年多了,它 ...
- 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 ...
- iOS 日历类(NSCalendar)
对于时间的操作在开发中很常见,但有时候我们需要获取到一年后的时间,或者一周后的时间.靠通过秒数计算是不行的.那就牵扯到另外一个日历类(NSCalendar).下面先简单看一下 NSDate let d ...
- SKEmitterNode类
继承自 SKNode:UIResponder:NSObject 符合 NSCoding(SKNode)NSCopying(SKNode)NSObject(NSObject) 框架 /System/L ...
随机推荐
- Educational Codeforces Round 2 Edge coloring of bipartite graph
题意: 输入一个二分图,用最少的颜色数给它的每条边染色,使得同一个顶点连的边中颜色互不相同. 输出至少需要的颜色数和任意一种染色方案. 分析: 证明不会,只说一下(偷瞄巨巨代码学到的)做法. 假设点的 ...
- HDU 5527 Too Rich 贪心
题意: 有\(10\)种面值为\(1, 5, 10, 20, 50, 100, 200, 500, 1000, 2000\)的纸币,现在你要选最多的数量凑成\(p\)块钱. 分析: 同样分析问题的反面 ...
- webdriver高级应用-js操作滚动条
1.滑动页面的滚动条到页面最下面 2.滑动页面的滚动条到页面的某个元素 3.滑动页面的滚动条向下移动某个数量的像素 #encoding=utf-8 from selenium import webdr ...
- pl/sql的控制结构,分支、循环、控制
一.pl/sql的进阶--控制结构在任何计算机语言(c,java,pascal)都有各种控制语句(条件语句,循环结构,顺序控制结构...),在pl/sql中也存在这样的控制结构.在本部分学习完成后,希 ...
- API生命周期第二阶段——设计:采用swagger进行API描述、设计
本篇博客主要是以swagger为依托,介绍API生命周期的第二个阶段--设计!在详细介绍之前,我必须声明一点:如果是想了解swagger和项目框架的集成的,这里没有.我要介绍的swagger进行的AP ...
- 设计模式(十六)迭代器模式 Iterator
什么时候需要用到迭代器模式? 有许多中方法,可以把对象堆起来放进一个集合(可以是数组.堆栈.列表.哈希表,等等). 每一种类型的集合,都有各自适用的时机.但是某个时间段,客户端可能希望去遍历这个集合. ...
- 【Vjudge】P1989Subpalindromes(线段树)
题目链接 水题一道,用线段树维护哈希值,脑补一下加减乱搞搞……注意细节就过了 一定注意细节…… #include<cstdio> #include<cstdlib> #incl ...
- 【Luogu】P2765魔术球问题(没看懂的乱搞)
题目链接 这题……讲道理我没看懂. 不过我看懂题解的代码是在干嘛了qwq 题解是zhaoyifan的题解 然后……我来讲讲这个题解好了. 题解把值为i的球拆成了两个,一个编号是i*2,一个编号是i*2 ...
- getBoundingClientRect说明
getBoundingClientRect用于获取某个元素相对于视窗的位置集合. 1.语法:这个方法没有参数. rectObject = object.getBoundingClientRect() ...
- [APIO2009]抢掠计划 ($Tarjan$,最长路)
题目链接 Solution 裸题诶... 直接 \(Tarjan\) 缩点+ \(SPFA\) 最长路即可. 不过在洛谷上莫名被卡... RE两个点... Code #include<bits/ ...