Emitter.start has a new parameter: forceQuantity which will force the quantity of a flow of particles to be the given value (request #853)

Emitter.explode is a new short-cut for exploding a fixed quantity of particles at once.
Emitter.flow is a new short-cut for creating a flow of particles based on the given frequency.
This commit is contained in:
photonstorm 2014-06-02 01:15:58 +01:00
parent 12252944fa
commit 1c9e23f535
3 changed files with 45 additions and 10 deletions

View file

@ -63,6 +63,7 @@ Version 2.0.6 - "Jornhill" - -in development-
* Stage no longer creates the Phaser.Canvas object, but Game itself does in the setupRenderer method.
* Canvas.create has deprecated the noCocoon parameter as it's no longer required. The parameter is still in the signature, but no longer used in the method.
* Time.add allows you to add an existing Phaser.Timer to the timer pool (request #864)
* Emitter.start has a new parameter: forceQuantity which will force the quantity of a flow of particles to be the given value (request #853)
### CocoonJS Specific Updates
@ -88,6 +89,8 @@ Version 2.0.6 - "Jornhill" - -in development-
* Loader.pack will allow you to load in a new Phaser Asset Pack JSON file. An Asset Pack is a specially structured file that allows you to define all assets for your game in an external file. The file can be split into sections, allowing you to control loading a specific set of files from it. An example JSON file can be found in the `resources\Asset Pack JSON Format` folder and examples of use in the Phaser Examples repository.
* Loader.totalQueuedPacks returns the number of Asset Packs in the queue.
* Loader.totalLoadedPacks returns the number of Asset Packs already loaded.
* Emitter.explode is a new short-cut for exploding a fixed quantity of particles at once.
* Emitter.flow is a new short-cut for creating a flow of particles based on the given frequency.
### Bug Fixes

4
build/phaser.d.ts vendored
View file

@ -2931,6 +2931,8 @@ declare module Phaser {
at(object: any): void;
emitParticle(): void;
explode(lifespan?: number, quantity?: number): void;
flow(lifespan?: number, frequency?: number, quantity?: number): void;
kill(): void;
makeParticles(keys: any, frames?: any, quantity?: number, collide?: boolean, collideWorldBounds?: boolean): Phaser.Particles.Arcade.Emitter;
reset(x: number, y: number, health?: number): Phaser.Particles;
@ -2940,7 +2942,7 @@ declare module Phaser {
setSize(width: number, height: number): void;
setXSpeed(min: number, max: number): void;
setYSpeed(min: number, max: number): void;
start(explode?: boolean, lifespan?: number, frequency?: number, quantity?: number): void;
start(explode?: boolean, lifespan?: number, frequency?: number, quantity?: number, forceQuantity?: boolean): void;
update(): void;
revive(): void;

View file

@ -5,24 +5,24 @@
*/
/**
* Phaser - ArcadeEmitter
*
* @class Phaser.Particles.Arcade.Emitter
* @classdesc Emitter is a lightweight particle emitter. It can be used for one-time explosions or for
* continuous effects like rain and fire. All it really does is launch Particle objects out
* at set intervals, and fixes their positions and velocities accorindgly.
*
* @classdesc Emitter is a lightweight particle emitter that uses Arcade Physics.
* It can be used for one-time explosions or for continuous effects like rain and fire.
* All it really does is launch Particle objects out at set intervals, and fixes their positions and velocities accorindgly.
*
* @constructor
* @extends Phaser.Group
* @param {Phaser.Game} game - Current game instance.
* @param {number} [x=0] - The x coordinate within the Emitter that the particles are emitted from.
* @param {number} [y=0] - The y coordinate within the Emitter that the particles are emitted from.
* @param {number} [maxParticles=50] - The total number of particles in this emitter..
* @param {number} [maxParticles=50] - The total number of particles in this emitter.
*/
Phaser.Particles.Arcade.Emitter = function (game, x, y, maxParticles) {
/**
* @property {number} maxParticles - The total number of particles in this emitter..
* @property {number} maxParticles - The total number of particles in this emitter.
* @default
*/
this.maxParticles = maxParticles || 50;
@ -398,20 +398,50 @@ Phaser.Particles.Arcade.Emitter.prototype.revive = function () {
};
/**
* Call this function to emit the given quantity of particles at all once (an explosion)
*
* @method Phaser.Particles.Arcade.Emitter#explode
* @param {number} [lifespan=0] - How long each particle lives once emitted in ms. 0 = forever.
* @param {number} [quantity=0] - How many particles to launch.
*/
Phaser.Particles.Arcade.Emitter.prototype.explode = function (lifespan, quantity) {
this.start(true, lifespan, 0, quantity, false);
};
/**
* Call this function to start emitting a flow of particles at the given frequency.
*
* @method Phaser.Particles.Arcade.Emitter#flow
* @param {number} [lifespan=0] - How long each particle lives once emitted in ms. 0 = forever.
* @param {number} [frequency=250] - Frequency is how often to emit a particle, given in ms.
* @param {number} [quantity=0] - How many particles to launch.
*/
Phaser.Particles.Arcade.Emitter.prototype.flow = function (lifespan, frequency, quantity) {
this.start(false, lifespan, frequency, quantity, true);
};
/**
* Call this function to start emitting particles.
*
* @method Phaser.Particles.Arcade.Emitter#start
* @param {boolean} [explode=true] - Whether the particles should all burst out at once (true) or at the frequency given (false).
* @param {number} [lifespan=0] - How long each particle lives once emitted in ms. 0 = forever.
* @param {number} [frequency=250] - Ignored if Explode is set to true. Frequency is how often to emit 1 particle. Value given in ms.
* @param {number} [quantity=0] - How many particles to launch. 0 = "all of the particles".
* @param {number} [forceQuantity=false] - If true and creating a particle flow, the quantity emitted will be forced to the be quantity given in this call.
*/
Phaser.Particles.Arcade.Emitter.prototype.start = function (explode, lifespan, frequency, quantity) {
Phaser.Particles.Arcade.Emitter.prototype.start = function (explode, lifespan, frequency, quantity, forceQuantity) {
if (typeof explode === 'undefined') { explode = true; }
if (typeof lifespan === 'undefined') { lifespan = 0; }
if (typeof frequency === 'undefined' || frequency === null) { frequency = 250; }
if (typeof quantity === 'undefined') { quantity = 0; }
if (typeof forceQuantity === 'undefined') { forceQuantity = false; }
this.revive();
@ -422,7 +452,7 @@ Phaser.Particles.Arcade.Emitter.prototype.start = function (explode, lifespan, f
this.lifespan = lifespan;
this.frequency = frequency;
if (explode)
if (explode || forceQuantity)
{
this._quantity = quantity;
}