# Class: Particle

## Hierarchy

- `BasicParticle`

  ↳ **`Particle`**

## Table of contents

### Constructors

- constructor

### Events

- onAdd
- onRelease
- onRemove
- onTick
- onUpdate

### Properties

- priority
- schema
- subEmitters
- EVENTS

### Accessors

- billboardMode
- data
- el
- emitterPosition
- id
- material
- particleEmitter
- scene
- spriteChangeSpeed
- useBillboard
- useRampGradients
- useRandomSpriteCellIndex
- useSpriteCellLoop
- useSpriteSheet
- version

### Methods

- addAlphaGradient
- addColorGradient
- addColorRemapGradient
- addDragGradient
- addLimitSpeedGradient
- addRampGradient
- addSizeGradient
- addSpeedScaleGradient
- clone
- createBoxEmitter
- createPointEmitter
- createSphereEmitter
- createSubEmitter
- getData
- initParticle
- resetParticle
- setData
- setDataOne
- start
- stop

## Constructors

### constructor

• **new Particle**()

#### Inherited from

BasicParticle.constructor

## Events

### onAdd

• **onAdd**: 

___

### onRelease

• **onRelease**: 

___

### onRemove

• **onRemove**: 

___

### onTick

• **onTick**: 

___

### onUpdate

• **onUpdate**: 

## Properties

### priority

• `Readonly` **priority**: `number` = `300`

#### Overrides

BasicParticle.priority

___

### schema

• `Readonly` **schema**: [`IComponentSchema`](/miniprogram/dev/reference/xr-frame/api/interfaces/IComponentSchema)

详见[ParticleSchema](../modules#ParticleSchema)。

#### Inherited from

BasicParticle.schema

___

### subEmitters

• **subEmitters**: `any` = `null`

___

### EVENTS

▪ `Static` **EVENTS**: `string`[]

#### Overrides

BasicParticle.EVENTS

## Accessors

### billboardMode

• `get` **billboardMode**(): `number`

#### Returns

`number`

• `set` **billboardMode**(`value`): `void`

#### Parameters

| Name | Type |
| :------ | :------ |
| `value` | `number` |

#### Returns

`void`

___

### data

• `get` **data**(): [`IParticleData`](/miniprogram/dev/reference/xr-frame/api/interfaces/IParticleData)

#### Returns

[`IParticleData`](/miniprogram/dev/reference/xr-frame/api/interfaces/IParticleData)

• `set` **data**(`value`): `void`

#### Parameters

| Name | Type |
| :------ | :------ |
| `value` | [`IParticleData`](/miniprogram/dev/reference/xr-frame/api/interfaces/IParticleData) |

#### Returns

`void`

___

### el

• `get` **el**(): [`Element`](Element)

挂载的元素。

#### Returns

[`Element`](Element)

___

### emitterPosition

• `get` **emitterPosition**(): [`Vector3`](Vector3)

#### Returns

[`Vector3`](Vector3)

• `set` **emitterPosition**(`value`): `void`

#### Parameters

| Name | Type |
| :------ | :------ |
| `value` | [`Vector3`](Vector3) |

#### Returns

`void`

___

### id

• `get` **id**(): `number`

#### Returns

`number`

___

### material

• `get` **material**(): [`Material`](Material)

#### Returns

[`Material`](Material)

• `set` **material**(`value`): `void`

#### Parameters

| Name | Type |
| :------ | :------ |
| `value` | [`Material`](Material) |

#### Returns

`void`

___

### particleEmitter

• `get` **particleEmitter**(): `BasicShapeEmitter`

#### Returns

`BasicShapeEmitter`

___

### scene

• `get` **scene**(): [`Scene`](Scene)

当前场景。

#### Returns

[`Scene`](Scene)

___

### spriteChangeSpeed

• `get` **spriteChangeSpeed**(): `number`

#### Returns

`number`

___

### useBillboard

• `get` **useBillboard**(): `boolean`

#### Returns

`boolean`

• `set` **useBillboard**(`value`): `void`

#### Parameters

| Name | Type |
| :------ | :------ |
| `value` | `boolean` |

#### Returns

`void`

___

### useRampGradients

• `get` **useRampGradients**(): `boolean`

#### Returns

`boolean`

• `set` **useRampGradients**(`value`): `void`

#### Parameters

| Name | Type |
| :------ | :------ |
| `value` | `boolean` |

#### Returns

`void`

___

### useRandomSpriteCellIndex

• `get` **useRandomSpriteCellIndex**(): `boolean`

#### Returns

`boolean`

___

### useSpriteCellLoop

• `get` **useSpriteCellLoop**(): `boolean`

#### Returns

`boolean`

___

### useSpriteSheet

• `get` **useSpriteSheet**(): `boolean`

#### Returns

`boolean`

• `set` **useSpriteSheet**(`value`): `void`

#### Parameters

| Name | Type |
| :------ | :------ |
| `value` | `boolean` |

#### Returns

`void`

___

### version

• `get` **version**(): `number`

当前版本，每次有数据更新都会增加，可以用作和其他组件合作的依据。

#### Returns

`number`

## Methods

### addAlphaGradient

▸ **addAlphaGradient**(`gradient`, `alpha`, `alpha2?`): `void`

添加粒子运动过程中的透明度变化规则。

#### Parameters

| Name | Type | Description |
| :------ | :------ | :------ |
| `gradient` | `number` | 指定所处粒子生命周期的阶段 |
| `alpha` | `number` | 指定粒子颜色透明度的左区间[0-1] |
| `alpha2?` | `number` | 指定粒子颜色透明度的右区间[0-1] |

#### Returns

`void`

#### Inherited from

BasicParticle.addAlphaGradient

___

### addColorGradient

▸ **addColorGradient**(`gradient`, `color1`, `color2?`): `void`

添加粒子运动过程中的颜色变化规则。

#### Parameters

| Name | Type | Description |
| :------ | :------ | :------ |
| `gradient` | `number` | 指定所处粒子生命周期的阶段 |
| `color1` | [`Vector4`](Vector4) | 指定粒子颜色的左区间 |
| `color2?` | [`Vector4`](Vector4) | 指定粒子颜色的右区间 |

#### Returns

`void`

#### Inherited from

BasicParticle.addColorGradient

___

### addColorRemapGradient

▸ **addColorRemapGradient**(`gradient`, `min`, `max?`): `void`

添加粒子运动过程中的透明度变化范围。

#### Parameters

| Name | Type | Description |
| :------ | :------ | :------ |
| `gradient` | `number` | 指定所处粒子生命周期的阶段 |
| `min` | `number` | 指定粒子透明度值的左区间 |
| `max?` | `number` | 指定粒子透明度值的右区间 |

#### Returns

`void`

#### Inherited from

BasicParticle.addColorRemapGradient

___

### addDragGradient

▸ **addDragGradient**(`gradient`, `drag`, `drag2?`): `void`

添加粒子运动过程中的阻力规则。

#### Parameters

| Name | Type | Description |
| :------ | :------ | :------ |
| `gradient` | `number` | 指定所处粒子生命周期的阶段 |
| `drag` | `number` | - |
| `drag2?` | `number` | - |

#### Returns

`void`

#### Inherited from

BasicParticle.addDragGradient

___

### addLimitSpeedGradient

▸ **addLimitSpeedGradient**(`gradient`, `limitSpeed`, `limitSpeed2?`): `void`

添加粒子运动过程中的速度限制规则。

#### Parameters

| Name | Type | Description |
| :------ | :------ | :------ |
| `gradient` | `number` | 指定所处粒子生命周期的阶段 |
| `limitSpeed` | `number` | 指定粒子限制速度的左区间 |
| `limitSpeed2?` | `number` | 指定粒子限制速度的右区间 |

#### Returns

`void`

#### Inherited from

BasicParticle.addLimitSpeedGradient

___

### addRampGradient

▸ **addRampGradient**(`gradient`, `color`): `void`

添加粒子运动过程中的根据透明度影响的颜色变化规则，将通过颜色变化图纹理进行采样。

#### Parameters

| Name | Type | Description |
| :------ | :------ | :------ |
| `gradient` | `any` | 指定粒子颜色变化图的具体位置，对应具体值应为(1-alpha) |
| `color` | `any` | 指定该位置的颜色 |

#### Returns

`void`

#### Inherited from

BasicParticle.addRampGradient

___

### addSizeGradient

▸ **addSizeGradient**(`gradient`, `size`, `size2?`): `void`

添加粒子运动过程中的尺寸变化规则。

#### Parameters

| Name | Type | Description |
| :------ | :------ | :------ |
| `gradient` | `number` | 指定所处粒子生命周期的阶段 |
| `size` | `number` | 指定粒子尺寸的左区间 |
| `size2?` | `number` | 指定粒子尺寸的右区间 |

#### Returns

`void`

#### Inherited from

BasicParticle.addSizeGradient

___

### addSpeedScaleGradient

▸ **addSpeedScaleGradient**(`gradient`, `speed`, `speed2?`): `void`

添加粒子运动过程中的速度变化规则。

#### Parameters

| Name | Type | Description |
| :------ | :------ | :------ |
| `gradient` | `number` | 指定所处粒子生命周期的阶段 |
| `speed` | `number` | 指定粒子速度的左区间 |
| `speed2?` | `number` | 指定粒子速度的右区间 |

#### Returns

`void`

#### Inherited from

BasicParticle.addSpeedScaleGradient

___

### clone

▸ **clone**(): [`Particle`](Particle)

获取一个拷贝的粒子系统。

#### Returns

[`Particle`](Particle)

#### Inherited from

BasicParticle.clone

___

### createBoxEmitter

▸ **createBoxEmitter**(`direction1`, `direction2`, `minEmitBox`, `maxEmitBox`): `default`

创建一个箱形发射器。

#### Parameters

| Name | Type | Description |
| :------ | :------ | :------ |
| `direction1` | [`Vector3`](Vector3) | 粒子运动方向左区间 |
| `direction2` | [`Vector3`](Vector3) | 粒子运动方向右区间 |
| `minEmitBox` | [`Vector3`](Vector3) | 粒子生成位置最小允许坐标 |
| `maxEmitBox` | [`Vector3`](Vector3) | 粒子生成位置最大允许坐标 |

#### Returns

`default`

箱形发射器

#### Inherited from

BasicParticle.createBoxEmitter

___

### createPointEmitter

▸ **createPointEmitter**(`direction1`, `direction2`): `default`

创建一个点发射器。

#### Parameters

| Name | Type | Description |
| :------ | :------ | :------ |
| `direction1` | [`Vector3`](Vector3) | 粒子运动方向左区间 |
| `direction2` | [`Vector3`](Vector3) | 粒子运动方向右区间 |

#### Returns

`default`

点发射器

#### Inherited from

BasicParticle.createPointEmitter

___

### createSphereEmitter

▸ **createSphereEmitter**(`radius`, `radiusRange`, `arc`, `randomizeDirection`): `default`

创建一个球形发射器。

#### Parameters

| Name | Type | Description |
| :------ | :------ | :------ |
| `radius` | `number` | 球形半径 |
| `radiusRange` | `number` | 球形区域内的覆盖范围[0-1] |
| `arc` | `number` | 粒子在球形内生成的角度区间[0-360] |
| `randomizeDirection` | `number` | 粒子运动方向偏离程度[0-1] |

#### Returns

`default`

球形发射器

#### Inherited from

BasicParticle.createSphereEmitter

___

### createSubEmitter

▸ **createSubEmitter**(`data`): `SubEmitter`

获取一个粒子子发射器。

#### Parameters

| Name | Type |
| :------ | :------ |
| `data` | [`IParticleData`](/miniprogram/dev/reference/xr-frame/api/interfaces/IParticleData) |

#### Returns

`SubEmitter`

#### Inherited from

BasicParticle.createSubEmitter

___

### getData

▸ **getData**(`key`): [`IParticleData`](/miniprogram/dev/reference/xr-frame/api/interfaces/IParticleData)[`T`]

获取一个当前值。

#### Type parameters

| Name | Type |
| :------ | :------ |
| `T` | extends keyof [`IParticleData`](/miniprogram/dev/reference/xr-frame/api/interfaces/IParticleData) |

#### Parameters

| Name | Type |
| :------ | :------ |
| `key` | `T` |

#### Returns

[`IParticleData`](/miniprogram/dev/reference/xr-frame/api/interfaces/IParticleData)[`T`]

#### Inherited from

BasicParticle.getData

___

### initParticle

▸ **initParticle**(`data`): `void`

初始化粒子系统的状态。

#### Parameters

| Name | Type |
| :------ | :------ |
| `data` | [`IParticleData`](/miniprogram/dev/reference/xr-frame/api/interfaces/IParticleData) |

#### Returns

`void`

___

### resetParticle

▸ **resetParticle**(): `void`

重置粒子系统的状态。

#### Returns

`void`

___

### setData

▸ **setData**(`data`): `void`

不通过`xml`而是直接设置`data`，注意值的类型需要和`schema`中一致。

#### Parameters

| Name | Type |
| :------ | :------ |
| `data` | `Partial` |

#### Returns

`void`

#### Inherited from

BasicParticle.setData

___

### setDataOne

▸ **setDataOne**(`key`, `value`): `void`

设置一个数据。

#### Type parameters

| Name | Type |
| :------ | :------ |
| `T` | extends keyof [`IParticleData`](/miniprogram/dev/reference/xr-frame/api/interfaces/IParticleData) |

#### Parameters

| Name | Type |
| :------ | :------ |
| `key` | `T` |
| `value` | [`IParticleData`](/miniprogram/dev/reference/xr-frame/api/interfaces/IParticleData)[`T`] |

#### Returns

`void`

#### Inherited from

BasicParticle.setDataOne

___

### start

▸ **start**(`delay?`): `void`

粒子系统开始播放。

#### Parameters

| Name | Type | Default value | Description |
| :------ | :------ | :------ | :------ |
| `delay` | `number` | `0` | 设定粒子延时几秒后再播放。 |

#### Returns

`void`

___

### stop

▸ **stop**(): `void`

停止粒子系统与其子发射器的播放。

#### Returns

`void`
