Class: DataManager

Phaser.Data. DataManager

The Data Component features a means to store pieces of data specific to a Game Object, System or Plugin.
You can then search, query it, and retrieve the data. The parent must either extend EventEmitter,
or have a property called events that is an instance of it.


new DataManager(parent, eventEmitter)

Parameters:
Name Type Description
parent object

The object that this DataManager belongs to.

eventEmitter Phaser.Events.EventEmitter

The DataManager's event emitter.

Since: 3.0.0
Source: src/data/DataManager.js (Line 18)

Members


count :integer

Return the total number of entries in this Data Manager.

Type:
  • integer
Since: 3.0.0
Source: src/data/DataManager.js (Line 594)

events :Phaser.Events.EventEmitter

The DataManager's event emitter.

Type:
Since: 3.0.0
Source: src/data/DataManager.js (Line 47)

freeze :boolean

Gets or sets the frozen state of this Data Manager.
A frozen Data Manager will block all attempts to create new values or update existing ones.

Type:
  • boolean
Since: 3.0.0
Source: src/data/DataManager.js (Line 572)

list :Object.<string, *>

The data list.

Type:
  • Object.<string, *>
Since: 3.0.0
Default Value:
  • {}
Source: src/data/DataManager.js (Line 61)

parent :*

The object that this DataManager belongs to.

Type:
  • *
Since: 3.0.0
Source: src/data/DataManager.js (Line 38)

values :Object.<string, *>

The public values list. You can use this to access anything you have stored
in this Data Manager. For example, if you set a value called gold you can
access it via:

this.data.values.gold;

You can also modify it directly:

this.data.values.gold += 1000;

Doing so will emit a setdata event from the parent of this Data Manager.

Do not modify this object directly. Adding properties directly to this object will not
emit any events. Always use DataManager.set to create new items the first time around.

Type:
  • Object.<string, *>
Since: 3.10.0
Default Value:
  • {}
Source: src/data/DataManager.js (Line 71)

Methods


destroy()

Destroy this data manager.

Since: 3.0.0
Source: src/data/DataManager.js (Line 555)

each(callback [, context] [, args])

Passes all data entries to the given callback.

Parameters:
Name Type Argument Description
callback DataEachCallback

The function to call.

context * <optional>

Value to use as this when executing callback.

args * <optional>
<repeatable>

Additional arguments that will be passed to the callback, after the game object, key, and data.

Since: 3.0.0
Source: src/data/DataManager.js (Line 342)
Returns:

This DataManager object.

Type
Phaser.Data.DataManager

get(key)

Retrieves the value for the given key, or undefined if it doesn't exist.

You can also access values via the values object. For example, if you had a key called gold you can do either:

this.data.get('gold');

Or access the value directly:

this.data.values.gold;

You can also pass in an array of keys, in which case an array of values will be returned:

this.data.get([ 'gold', 'armor', 'health' ]);

This approach is useful for destructuring arrays in ES6.

Parameters:
Name Type Description
key string | Array.<string>

The key of the value to retrieve, or an array of keys.

Since: 3.0.0
Source: src/data/DataManager.js (Line 115)
Returns:

The value belonging to the given key, or an array of values, the order of which will match the input array.

Type
*

getAll()

Retrieves all data values in a new object.

Since: 3.0.0
Source: src/data/DataManager.js (Line 166)
Returns:

All data values.

Type
Object.<string, *>

has(key)

Determines whether the given key is set in this Data Manager.

Please note that the keys are case-sensitive and must be valid JavaScript Object property strings.
This means the keys gold and Gold are treated as two unique values within the Data Manager.

Parameters:
Name Type Description
key string

The key to check.

Since: 3.0.0
Source: src/data/DataManager.js (Line 498)
Returns:

Returns true if the key exists, otherwise false.

Type
boolean

merge(data [, overwrite])

Merge the given object of key value pairs into this DataManager.

Any newly created values will emit a setdata event. Any updated values (see the overwrite argument)
will emit a changedata event.

Parameters:
Name Type Argument Default Description
data Object.<string, *>

The data to merge.

overwrite boolean <optional>
true

Whether to overwrite existing data. Defaults to true.

Since: 3.0.0
Source: src/data/DataManager.js (Line 374)
Returns:

This DataManager object.

Type
Phaser.Data.DataManager

pop(key)

Retrieves the data associated with the given 'key', deletes it from this Data Manager, then returns it.

Parameters:
Name Type Description
key string

The key of the value to retrieve and delete.

Since: 3.0.0
Source: src/data/DataManager.js (Line 471)
Returns:

The value of the given key.

Type
*

query(search)

Queries the DataManager for the values of keys matching the given regular expression.

Parameters:
Name Type Description
search RegExp

A regular expression object. If a non-RegExp object obj is passed, it is implicitly converted to a RegExp by using new RegExp(obj).

Since: 3.0.0
Source: src/data/DataManager.js (Line 189)
Returns:

The values of the keys matching the search string.

Type
Object.<string, *>

remove(key)

Remove the value for the given key.

If the key is found in this Data Manager it is removed from the internal lists and a
removedata event is emitted.

You can also pass in an array of keys, in which case all keys in the array will be removed:

this.data.remove([ 'gold', 'armor', 'health' ]);
Parameters:
Name Type Description
key string | Array.<string>

The key to remove, or an array of keys to remove.

Since: 3.0.0
Source: src/data/DataManager.js (Line 404)
Returns:

This DataManager object.

Type
Phaser.Data.DataManager

reset()

Delete all data in this Data Manager and unfreeze it.

Since: 3.0.0
Source: src/data/DataManager.js (Line 534)
Returns:

This DataManager object.

Type
Phaser.Data.DataManager

set(key, data)

Sets a value for the given key. If the key doesn't already exist in the Data Manager then it is created.

data.set('name', 'Red Gem Stone');

You can also pass in an object of key value pairs as the first argument:

data.set({ name: 'Red Gem Stone', level: 2, owner: 'Link', gold: 50 });

To get a value back again you can call get:

data.get('gold');

Or you can access the value directly via the values property, where it works like any other variable:

data.values.gold += 50;

When the value is first set, a setdata event is emitted.

If the key already exists, a changedata event is emitted instead, along an event named after the key.
For example, if you updated an existing key called PlayerLives then it would emit the event changedata_PlayerLives.
These events will be emitted regardless if you use this method to set the value, or the direct values setter.

Please note that the data keys are case-sensitive and must be valid JavaScript Object property strings.
This means the keys gold and Gold are treated as two unique values within the Data Manager.

Parameters:
Name Type Description
key string | object

The key to set the value for. Or an object or key value pairs. If an object the data argument is ignored.

data *

The value to set for the given key. If an object is provided as the key this argument is ignored.

Since: 3.0.0
Source: src/data/DataManager.js (Line 214)
Returns:

This DataManager object.

Type
Phaser.Data.DataManager

setFreeze(value)

Freeze or unfreeze this Data Manager. A frozen Data Manager will block all attempts
to create new values or update existing ones.

Parameters:
Name Type Description
value boolean

Whether to freeze or unfreeze the Data Manager.

Since: 3.0.0
Source: src/data/DataManager.js (Line 516)
Returns:

This DataManager object.

Type
Phaser.Data.DataManager