Skip to main content
Version: Phaser v4.0.0

EdgeZone

An Edge Zone is an emit zone for a Particle Emitter that places emitted particles sequentially along the edges of a shape. The shape is defined by a source object that provides a getPoints(quantity, stepRate) method, such as a Phaser Curve, Path, or any compatible geometry object.

As each particle is emitted, it is positioned at the next point along the shape's edge, cycling through all points in order. If yoyo is enabled, the traversal reverses direction when it reaches either end, creating a back-and-forth effect. If seamless is enabled, duplicate endpoints are removed to avoid stacking particles at the join when the shape loops back on itself.

Use this zone when you want particles to trace or outline a shape — for example, sparks running along a wire, particles orbiting a path, or effects that follow the boundary of a geometric figure.

Constructor

new EdgeZone(source, quantity, [stepRate], [yoyo], [seamless], [total])

Parameters

nametypeoptionaldefaultdescription
sourcePhaser.Types.GameObjects.Particles.EdgeZoneSourceNoAn object instance with a getPoints(quantity, stepRate) method returning an array of points.
quantitynumberNoThe number of particles to place on the source edge. Set to 0 to use stepRate instead.
stepRatenumberYesThe distance between each particle. When set, quantity is implied and should be set to 0.
yoyobooleanYesfalseWhether particles are placed from start to end and then end to start.
seamlessbooleanYestrueWhether one endpoint will be removed if it's identical to the other.
totalnumberYes-1The total number of particles this zone will emit before passing over to the next emission zone in the Emitter. -1 means it will never pass over and you must use setEmitZone to change it.

Scope: static

Source: src/gameobjects/particles/zones/EdgeZone.js#L9
Since: 3.0.0

Public Members

counter

counter: number

Description:

The counter used for iterating the EdgeZone's points.

Source: src/gameobjects/particles/zones/EdgeZone.js#L94
Since: 3.0.0


points

points: Array.<Phaser.Math.Vector2>

Description:

The points placed on the source edge.

Source: src/gameobjects/particles/zones/EdgeZone.js#L57
Since: 3.0.0


quantity

quantity: number

Description:

The number of particles to place on the source edge. Set to 0 to use stepRate instead.

Source: src/gameobjects/particles/zones/EdgeZone.js#L67
Since: 3.0.0


seamless

seamless: boolean

Description:

Whether one endpoint will be removed if it's identical to the other.

Source: src/gameobjects/particles/zones/EdgeZone.js#L104
Since: 3.0.0


source

source: Phaser.Types.GameObjects.Particles.EdgeZoneSource, Phaser.Types.GameObjects.Particles.RandomZoneSource

Description:

An object instance with a getPoints(quantity, stepRate) method returning an array of points.

Source: src/gameobjects/particles/zones/EdgeZone.js#L48
Since: 3.0.0


stepRate

stepRate: number

Description:

The distance between each particle. When set, quantity is implied and should be set to 0.

Source: src/gameobjects/particles/zones/EdgeZone.js#L76
Since: 3.0.0


total

total: number

Description:

The total number of particles this zone will emit before the Emitter transfers control over to the next zone in its emission zone list.

By default this is -1, meaning it will never pass over from this zone to another one. You can call the ParticleEmitter.setEmitZone method to change it, or set this value to something else via the config, or directly at runtime.

A value of 1 would mean the zones rotate in order, but it can be set to any integer value.

Source: src/gameobjects/particles/zones/EdgeZone.js#L137
Since: 3.60.0


yoyo

yoyo: boolean

Description:

Whether particles are placed from start to end and then end to start.

Source: src/gameobjects/particles/zones/EdgeZone.js#L85
Since: 3.0.0


Public Methods

changeSource

<instance> changeSource(source)

Description:

Change the source of the EdgeZone, replacing the existing shape with a new one. The new source must provide a getPoints(quantity, stepRate) method. After the source is replaced, updateSource is called automatically to regenerate the edge points and reset internal state accordingly.

Parameters:

nametypeoptionaldescription
sourcePhaser.Types.GameObjects.Particles.EdgeZoneSourceNoAn object instance with a getPoints(quantity, stepRate) method returning an array of points.

Returns: Phaser.GameObjects.Particles.Zones.EdgeZone - This Edge Zone.

Source: src/gameobjects/particles/zones/EdgeZone.js#L198
Since: 3.0.0


getPoint

<instance> getPoint(particle)

Description:

Get the next point in the Zone and set its coordinates on the given Particle.

Points are stepped through sequentially. When the end of the point list is reached, the counter wraps back to the start, or reverses direction if yoyo is enabled. Called automatically by the Particle Emitter each time a new particle is emitted.

Parameters:

nametypeoptionaldescription
particlePhaser.GameObjects.Particles.ParticleNoThe Particle.

Source: src/gameobjects/particles/zones/EdgeZone.js#L218
Since: 3.0.0


updateSource

<instance> updateSource()

Description:

Update the Phaser.GameObjects.Particles.Zones.EdgeZone#points from the EdgeZone's Phaser.GameObjects.Particles.Zones.EdgeZone#source.

Also updates internal properties.

Returns: Phaser.GameObjects.Particles.Zones.EdgeZone - This Edge Zone.

Source: src/gameobjects/particles/zones/EdgeZone.js#L158
Since: 3.0.0