Options
All
  • Public
  • Public/Protected
  • All
Menu

Class ParticleSystem2D

Particle System base class.
Attributes of a Particle System:

  • emmision rate of the particles
  • Gravity Mode (Mode A):
  • gravity
  • direction
  • speed +- variance
  • tangential acceleration +- variance
  • radial acceleration +- variance
  • Radius Mode (Mode B):
  • startRadius +- variance
  • endRadius +- variance
  • rotate +- variance
  • Properties common to all modes:
  • life +- life variance
  • start spin +- variance
  • end spin +- variance
  • start size +- variance
  • end size +- variance
  • start color +- variance
  • end color +- variance
  • life +- variance
  • blending function
  • texture

    cocos2d also supports particles generated by Particle Designer (http://particledesigner.71squared.com/).
    'Radius Mode' in Particle Designer uses a fixed emit rate of 30 hz. Since that can't be guarateed in cocos2d,
    cocos2d uses a another approach, but the results are almost identical.
    cocos2d supports all the variables used by Particle Designer plus a bit more:
  • spinning particles (supported when using ParticleSystem)
  • tangential acceleration (Gravity mode)
  • radial acceleration (Gravity mode)
  • radius direction (Radius mode) (Particle Designer supports outwards to inwards direction only)
    It is possible to customize any of the above mentioned properties in runtime. Example:
example

emitter.radialAccel = 15; emitter.startSpin = 0;

Hierarchy

Index

Constructors

Properties

Accessors

Methods

Constructors

constructor

Properties

Private __prefab

__prefab: CompPrefabInfo | null = null

Protected _assembler

_assembler: IAssembler | null = null

Protected _blendHash

_blendHash: number = 0

Protected _blendState

_blendState: BlendState = new BlendState()

Protected _color

_color: Color = Color.WHITE.clone()

Private _custom

_custom: boolean = false

Protected _customMaterial

_customMaterial: Material | null = null

Private _deferredloaded

_deferredloaded: boolean = false

Protected _delegateSrc

_delegateSrc: Node | null = null

Protected _dstBlendFactor

_dstBlendFactor: BlendFactor = BlendFactor.ONE_MINUS_SRC_ALPHA

Private _enabled

_enabled: boolean = true

Private _endColor

_endColor: Color = new Color(255, 255, 255, 0)

Private _endColorVar

_endColorVar: Color = new Color(0, 0, 0, 0)

Private _file

_file: ParticleAsset | null = null

Private _focused

_focused: boolean

Private _id

_id: string = idGenerator.getNewId()

For internal usage.

Protected _instanceMaterialType

_instanceMaterialType: InstanceMaterialType = InstanceMaterialType.ADD_COLOR_AND_TEXTURE

Protected _lastParent

_lastParent: Node | null = null

Protected _materialInstances

_materialInstances: (null | MaterialInstance)[] = []

Protected _materials

_materials: (null | Material)[] = []

Protected _models

_models: Model[] = []

Protected _name

_name: string

_objFlags

_objFlags: number

Private _plistFile

_plistFile: any

Private _positionType

_positionType: number = PositionType.FREE

Protected _postAssembler

_postAssembler: IAssembler | null = null

Private _previewTimer

_previewTimer: any

Protected _renderData

_renderData: RenderData | null = null

Protected _renderDataFlag

_renderDataFlag: boolean = true

Protected _renderFlag

_renderFlag: boolean = true

_renderSpriteFrame

_renderSpriteFrame: SpriteFrame | null

Private sceneGetter

sceneGetter: null | (() => RenderScene) = null

_simulator

_simulator: Simulator

Private _spriteFrame

_spriteFrame: SpriteFrame | null = null

Protected _srcBlendFactor

_srcBlendFactor: BlendFactor = BlendFactor.SRC_ALPHA

Private _startColor

_startColor: Color = new Color(255, 255, 255, 255)

Private _startColorVar

_startColorVar: Color = new Color(0, 0, 0, 0)

Private _stopped

_stopped: boolean = true

Private _tiffReader

_tiffReader: any

Private _totalParticles

_totalParticles: number = 150

Protected _visFlags

_visFlags: number = Layers.Enum.NONE

angle

angle: number = 90

粒子角度。

angleVar

angleVar: number = 20

粒子角度变化范围。

aspectRatio

aspectRatio: number = 1

Private autoRemoveOnFinish

autoRemoveOnFinish: boolean = false

粒子播放完毕后自动销毁所在的节点。

duration

duration: number = -1

发射器生存时间,单位秒,-1表示持续发射。

emissionRate

emissionRate: number = 10

每秒发射的粒子数目。

emitterMode

emitterMode: number = EmitterMode.GRAVITY

发射器类型。

endRadius

endRadius: number = 0

结束半径,只有在半径模式下可用。

endRadiusVar

endRadiusVar: number = 0

结束半径变化范围。

endSize

endSize: number = 0

粒子结束时的大小。

endSizeVar

endSizeVar: number = 0

粒子结束大小的变化范围。

endSpin

endSpin: number = 0

粒子结束自旋角度。

endSpinVar

endSpinVar: number = 0

粒子结束自旋角度变化范围。

gravity

gravity: Vec2 = Vec2.ZERO.clone()

重力。

life

life: number = 1

粒子的运行时间。

lifeVar

lifeVar: number = 0

粒子的运行时间变化范围。

node

node: Node = NullNode

该组件被附加到的节点。组件总会附加到一个节点。

example
import { log } from 'cc';
log(comp.node);

Private playOnLoad

playOnLoad: boolean = true

如果设置为 true 运行时会自动发射粒子。

posVar

posVar: Vec2 = Vec2.ZERO.clone()

发射器位置的变化范围。(横向和纵向)

Private preview

preview: boolean = true

在编辑器模式下预览粒子,启用后选中粒子时,粒子将自动播放。

radialAccel

radialAccel: number = 0

粒子径向加速度,即平行于重力方向的加速度,只有在重力模式下可用。

radialAccelVar

radialAccelVar: number = 0

粒子径向加速度变化范围。

rotatePerS

rotatePerS: number = 0

粒子每秒围绕起始点的旋转角度,只有在半径模式下可用。

rotatePerSVar

rotatePerSVar: number = 0

粒子每秒围绕起始点的旋转角度变化范围。

rotationIsDir

rotationIsDir: boolean = false

每个粒子的旋转是否等于其方向,只有在重力模式下可用。

sourcePos

sourcePos: Vec2 = Vec2.ZERO.clone()

发射器位置。

speed

speed: number = 180

速度。

speedVar

speedVar: number = 50

速度变化范围。

startRadius

startRadius: number = 0

初始半径,表示粒子出生时相对发射器的距离,只有在半径模式下可用。

startRadiusVar

startRadiusVar: number = 0

初始半径变化范围。

startSize

startSize: number = 50

粒子的初始大小。

startSizeVar

startSizeVar: number = 0

粒子初始大小的变化范围。

startSpin

startSpin: number = 0

粒子开始自旋角度。

startSpinVar

startSpinVar: number = 0

粒子开始自旋角度变化范围。

stencilStage

stencilStage: Stage = Stage.DISABLED

组件模板缓冲状态 (注意:请不要直接修改它的值)

tangentialAccel

tangentialAccel: number = 80

每个粒子的切向加速度,即垂直于重力方向的加速度,只有在重力模式下可用。

tangentialAccelVar

tangentialAccelVar: number = 0

每个粒子的切向加速度变化范围。

Static Assembler

Assembler: IAssemblerManager | null = null

渲染数据组装器

Static BlendState

BlendState: BlendFactor = BlendFactor

混合模式枚举类型

see

BlendFactor

Static Readonly DURATION_INFINITY

DURATION_INFINITY: -1 = DURATION_INFINITY

Static EmitterMode

EmitterMode: { GRAVITY: number; RADIUS: number } = EmitterMode

Type declaration

  • GRAVITY: number
    en

    Uses gravity, speed, radial and tangential acceleration.

    zh

    重力模式,模拟重力,可让粒子围绕一个中心点移近或移远。

  • RADIUS: number
    en

    Uses radius movement + rotation.

    zh

    半径模式,可以使粒子以圆圈方式旋转,它也可以创造螺旋效果让粒子急速前进或后退。

Static PositionType

PositionType: { FREE: number; GROUPED: number; RELATIVE: number } = PositionType

Type declaration

  • FREE: number
    en

    Living particles are attached to the world and are unaffected by emitter repositioning.

    zh

    自由模式,相对于世界坐标,不会随粒子节点移动而移动。(可产生火焰、蒸汽等效果)

  • GROUPED: number
    en

    Living particles are attached to the emitter and are translated along with it.

    zh

    整组模式,粒子跟随发射器移动。(不会发生拖尾)

  • RELATIVE: number
    en

    In the relative mode, the particle will move with the parent node, but not with the node where the particle is. For example, the coffee in the cup is steaming. Then the steam moves (forward) with the train, rather than moves with the cup.

    zh

    相对模式,粒子会跟随父节点移动,但不跟随粒子所在节点移动,例如在一列行进火车中,杯中的咖啡飘起雾气, 杯子移动,雾气整体并不会随着杯子移动,但从火车整体的角度来看,雾气整体会随着火车移动。

Static PostAssembler

PostAssembler: IAssemblerManager | null = null

后置渲染数据组装器

Static Readonly START_RADIUS_EQUAL_TO_END_RADIUS

START_RADIUS_EQUAL_TO_END_RADIUS: -1 = START_RADIUS_EQUAL_TO_END_RADIUS

Static Readonly START_SIZE_EQUAL_TO_END_SIZE

START_SIZE_EQUAL_TO_END_SIZE: -1 = START_SIZE_EQUAL_TO_END_SIZE

Static system

system: null = null

Accessors

scriptAsset

  • get scriptAsset(): null

isOnLoadCalled

  • get isOnLoadCalled(): number

active

  • get active(): boolean

assembler

  • get assembler(): null | IAssembler

blendHash

  • get blendHash(): number

color

  • get color(): Readonly<Color>
  • set color(value: {}): void

custom

  • get custom(): boolean
  • set custom(value: boolean): void

customMaterial

  • get customMaterial(): null | Material
  • set customMaterial(val: null | Material): void

delegateSrc

  • set delegateSrc(value: Node): void

dstBlendFactor

enabled

  • get enabled(): boolean
  • set enabled(value: boolean): void

enabledInHierarchy

  • get enabledInHierarchy(): boolean

endColor

  • get endColor(): Color
  • set endColor(val: Color): void

endColorVar

  • get endColorVar(): Color
  • set endColorVar(val: Color): void

file

isValid

  • get isValid(): boolean
  • 表示该对象是否可用(被 destroy 后将不可用)。
    当一个对象的 destroy 调用以后,会在这一帧结束后才真正销毁。
    因此从下一帧开始 isValid 就会返回 false,而当前帧内 isValid 仍然会是 true。
    如果希望判断当前帧是否调用过 destroy,请使用 isValid(obj, true),不过这往往是特殊的业务需求引起的,通常情况下不需要这样。

    default

    true

    readonly
    example
    import { Node, log } from 'cc';
    const node = new Node();
    log(node.isValid);    // true
    node.destroy();
    log(node.isValid);    // true, still valid in this frame
    // after a frame...
    log(node.isValid);    // false, destroyed in the end of last frame

    Returns boolean

material

materials

name

  • get name(): string
  • set name(value: string): void

particleCount

  • get particleCount(): number

positionType

  • get positionType(): number
  • set positionType(val: number): void

renderData

  • get renderData(): null | RenderData

sharedMaterial

sharedMaterials

  • get sharedMaterials(): (null | Material)[]
  • set sharedMaterials(val: (null | Material)[]): void

spriteFrame

srcBlendFactor

startColor

  • get startColor(): Color
  • set startColor(val: Color): void

startColorVar

  • get startColorVar(): Color
  • set startColorVar(val: Color): void

stopped

  • get stopped(): boolean

totalParticles

  • get totalParticles(): number
  • set totalParticles(value: number): void

uuid

  • get uuid(): string

visibility

  • get visibility(): number
  • set visibility(val: number): void

Methods

preload

  • __preload(): void

applyFile

  • _applyFile(): void

applySpriteFrame

  • _applySpriteFrame(): void

Protected attachToScene

  • _attachToScene(): void

Protected canRender

  • _canRender(): boolean

Protected checkAndUpdateRenderData

  • _checkAndUpdateRenderData(): void

Protected clearMaterials

  • _clearMaterials(): void

collectModels

  • _collectModels(): Model[]

destroyImmediate

  • _destroyImmediate(): void

destruct

  • _destruct(): void
  • Clear all references in the instance.

    NOTE: this method will not clear the getter or setter functions which defined in the instance of CCObject. You can override the _destruct method if you need, for example: _destruct: function () { for (var key in this) { if (this.hasOwnProperty(key)) { switch (typeof this[key]) { case 'string': this[key] = ''; break; case 'object': case 'function': this[key] = null; break; } } }

    Returns void

Protected detachFromScene

  • _detachFromScene(): void

finishedSimulation

  • _finishedSimulation(): void

Protected flushAssembler

  • _flushAssembler(): void

Optional Private getLocalBounds

  • getLocalBounds(out_rect: Rect): void
  • 如果组件的包围盒与节点不同,您可以实现该方法以提供自定义的轴向对齐的包围盒(AABB), 以便编辑器的场景视图可以正确地执行点选测试。

    Parameters

    • out_rect: Rect

      The rect to store the result bounding rect

    Returns void

Private getRenderScene

  • _getRenderScene(): RenderScene

getTexture

initTextureWithDictionary

  • initTextureWithDictionary(dict: any): boolean

initWithDictionary

  • initWithDictionary(dict: any): boolean

instantiate

  • instantiate(cloned: any): any

Protected nodeStateChange

Protected onMaterialModified

  • onMaterialModified(index: number, material: Material | null): void

onPreDestroy

  • _onPreDestroy(): void

Protected onRebuildPSO

  • onRebuildPSO(index: number, material: Material | null): void

onTextureLoaded

  • _onTextureLoaded(): void

Protected onVisibilityChange

  • onVisibilityChange(val: any): void

Protected postCanRender

  • _postCanRender(): void

Protected postRender

  • postRender(render: Batcher2D): void

Protected render

  • render(render: Batcher2D): void

Private startPreview

  • _startPreview(): void

Private stopPreview

  • _stopPreview(): void

syncAspect

  • _syncAspect(): void

updateBlendFunc

  • _updateBlendFunc(): void

Protected updateColor

  • _updateColor(): void

updateMaterial

  • _updateMaterial(): void

addComponent

  • addComponent<T>(classConstructor: Constructor<T>): T | null
  • addComponent(className: string): Component | null

addParticle

  • addParticle(): void

destroy

  • destroy(): boolean

destroyRenderData

  • destroyRenderData(): void

getBlendState

getComponent

  • getComponent<T>(classConstructor: Constructor<T>): T | null
  • getComponent(className: string): Component | null
  • 获取节点上指定类型的组件,如果节点有附加指定类型的组件,则返回,如果没有则为空。
    传入参数也可以是脚本的名称。

    example
    // get custom test calss.
    var test = node.getComponent("Test");

    Type parameters

    Parameters

    • classConstructor: Constructor<T>

      The class of component to be retrieved or to be created

    Returns T | null

  • 获取节点上指定类型的组件,如果节点有附加指定类型的组件,则返回,如果没有则为空。
    传入参数也可以是脚本的名称。

    example
    // get custom test calss.
    var test = node.getComponent("Test");

    Parameters

    • className: string

      A string for the class name of the component

    Returns Component | null

getComponentInChildren

  • getComponentInChildren<T>(classConstructor: Constructor<T>): T | null
  • getComponentInChildren(className: string): Component | null

getComponents

  • getComponents<T>(classConstructor: Constructor<T>): T[]
  • getComponents(className: string): Component[]

getComponentsInChildren

  • getComponentsInChildren<T>(classConstructor: Constructor<T>): T[]
  • getComponentsInChildren(className: string): Component[]

getMaterial

  • getMaterial(idx: number): Material | null

getMaterialInstance

  • getMaterialInstance(idx: number): Material | null

getRenderMaterial

  • getRenderMaterial(index: number): Material | null

Private initProperties

  • initProperties(): void

isFull

  • isFull(): boolean

Protected lateUpdate

  • lateUpdate(dt: any): void

markForUpdateRenderData

  • markForUpdateRenderData(enable?: boolean): void

onDestroy

  • onDestroy(): void

onDisable

  • onDisable(): void

onEnable

  • onEnable(): void

onFocusInEditor

  • onFocusInEditor(): void

Protected Optional onLoad

  • onLoad(): void
  • 当附加到一个激活的节点上或者其节点第一次激活时候调用。onLoad 总是会在任何 start 方法调用前执行,这能用于安排脚本的初始化顺序。
    该方法为生命周期方法,父类未必会有实现。并且你只能在该方法内部调用父类的实现,不可在其它地方直接调用该方法。

    Returns void

onLostFocusInEditor

  • onLostFocusInEditor(): void

onRestore

  • onRestore(): void

postUpdateAssembler

  • postUpdateAssembler(render: Batcher2D): void
  • 后置渲染数据组装程序,它会在所有子节点的渲染数据组装完成后被调用。 它可能会组装额外的渲染数据到顶点数据缓冲区,也可能只是重置一些渲染状态。 注意:不要手动调用该函数,除非你理解整个流程。

    Parameters

    • render: Batcher2D

    Returns void

requestRenderData

  • requestRenderData(): RenderData

Optional resetInEditor

  • resetInEditor(): void

resetSystem

  • resetSystem(): void

schedule

  • schedule(callback: any, interval?: number, repeat?: number, delay?: number): void
  • 调度一个自定义的回调任务。
    如果回调任务已调度,那么将不会重复调度它,只会更新时间间隔参数。

    example
    import { log } from 'cc';
    this.schedule((dt) => void log(`time: ${dt}`), 1);

    Parameters

    • callback: any

      The callback function of the task

    • Default value interval: number = 0

      The time interval between each invocation

    • Default value repeat: number = legacyCC.macro.REPEAT_FOREVER

      The repeat count of this task, the task will be invoked (repeat + 1) times, use macro.REPEAT_FOREVER to repeat a task forever

    • Default value delay: number = 0

      The delay time for the first invocation, Unit: s

    Returns void

scheduleOnce

  • scheduleOnce(callback: any, delay?: number): void
  • 调度一个只运行一次的回调任务,可以指定 0 让回调函数在下一帧立即执行或者在一定的延时之后执行。

    method

    scheduleOnce

    see

    schedule

    example
    import { log } from 'cc';
    this.scheduleOnce((dt) => void log(`time: ${dt}`), 2);

    Parameters

    • callback: any

      The callback function of the task

    • Default value delay: number = 0

      The delay time for the first invocation, Unit: s

    Returns void

setMaterial

  • setMaterial(material: Material | null, index: number): void

setMaterialInstance

  • setMaterialInstance(index: number, matInst: Material | null): void

Protected Optional start

  • start(): void
  • 如果该组件第一次启用,则在所有组件的 update 之前调用。通常用于需要在所有组件的 onLoad 初始化完毕后执行的逻辑。
    该方法为生命周期方法,父类未必会有实现。并且你只能在该方法内部调用父类的实现,不可在其它地方直接调用该方法。

    Returns void

stopSystem

  • stopSystem(): void
  • 停止发射器发射粒子,发射出去的粒子将继续运行,直至粒子生命结束。

    example

    // stop particle system. myParticleSystem.stopSystem();

    Returns void

unschedule

  • unschedule(callback_fn: any): void

unscheduleAllCallbacks

  • unscheduleAllCallbacks(): void

Protected Optional update

  • update(dt: number): void
  • 如果该组件启用,则每帧调用 update。
    该方法为生命周期方法,父类未必会有实现。并且你只能在该方法内部调用父类的实现,不可在其它地方直接调用该方法。

    Parameters

    • dt: number

      the delta time in seconds it took to complete the last frame

    Returns void

updateAssembler

  • updateAssembler(render: Batcher2D): void
  • 渲染数据组装程序,这个方法会在所有子节点数据组装之前更新并组装当前组件的渲染数据到 UI 的顶点数据缓冲区中。 一般在 UI 渲染流程中调用,用于组装所有的渲染数据到顶点数据缓冲区。 注意:不要手动调用该函数,除非你理解整个流程。

    Parameters

    • render: Batcher2D

    Returns void

updateBlendHash

  • updateBlendHash(): void

Protected updateMaterial

  • updateMaterial(): void

Static deferredDestroy

  • _deferredDestroy(): void

Generated using TypeDoc