phaser
Version:
A fast, free and fun HTML5 Game Framework for Desktop and Mobile web browsers from the team at Phaser Studio Inc.
198 lines (171 loc) • 5.84 kB
JavaScript
/**
* @author Richard Davey <rich@phaser.io>
* @copyright 2013-2025 Phaser Studio Inc.
* @license {@link https://opensource.org/licenses/MIT|MIT License}
*/
/**
* Provides methods used for setting the depth of a Game Object.
* Should be applied as a mixin and not used directly.
*
* @namespace Phaser.GameObjects.Components.Depth
* @since 3.0.0
*/
var ArrayUtils = require('../../utils/array');
var Depth = {
/**
* Private internal value. Holds the depth of the Game Object.
*
* @name Phaser.GameObjects.Components.Depth#_depth
* @type {number}
* @private
* @default 0
* @since 3.0.0
*/
_depth: 0,
/**
* The depth of this Game Object within the Scene. Ensure this value is only ever set to a number data-type.
*
* The depth is also known as the 'z-index' in some environments, and allows you to change the rendering order
* of Game Objects, without actually moving their position in the display list.
*
* The default depth is zero. A Game Object with a higher depth
* value will always render in front of one with a lower value.
*
* Setting the depth will queue a depth sort event within the Scene.
*
* @name Phaser.GameObjects.Components.Depth#depth
* @type {number}
* @since 3.0.0
*/
depth: {
get: function ()
{
return this._depth;
},
set: function (value)
{
if (this.displayList)
{
this.displayList.queueDepthSort();
}
this._depth = value;
}
},
/**
* The depth of this Game Object within the Scene.
*
* The depth is also known as the 'z-index' in some environments, and allows you to change the rendering order
* of Game Objects, without actually moving their position in the display list.
*
* The default depth is zero. A Game Object with a higher depth
* value will always render in front of one with a lower value.
*
* Setting the depth will queue a depth sort event within the Scene.
*
* @method Phaser.GameObjects.Components.Depth#setDepth
* @since 3.0.0
*
* @param {number} value - The depth of this Game Object. Ensure this value is only ever a number data-type.
*
* @return {this} This Game Object instance.
*/
setDepth: function (value)
{
if (value === undefined) { value = 0; }
this.depth = value;
return this;
},
/**
* Sets this Game Object to be at the top of the display list, or the top of its parent container.
*
* Being at the top means it will render on-top of everything else.
*
* This method does not change this Game Objects `depth` value, it simply alters its list position.
*
* @method Phaser.GameObjects.Components.Depth#setToTop
* @since 3.85.0
*
* @return {this} This Game Object instance.
*/
setToTop: function ()
{
var list = this.getDisplayList();
if (list)
{
ArrayUtils.BringToTop(list, this);
}
return this;
},
/**
* Sets this Game Object to the back of the display list, or the back of its parent container.
*
* Being at the back means it will render below everything else.
*
* This method does not change this Game Objects `depth` value, it simply alters its list position.
*
* @method Phaser.GameObjects.Components.Depth#setToBack
* @since 3.85.0
*
* @return {this} This Game Object instance.
*/
setToBack: function ()
{
var list = this.getDisplayList();
if (list)
{
ArrayUtils.SendToBack(list, this);
}
return this;
},
/**
* Move this Game Object so that it appears above the given Game Object.
*
* This means it will render immediately after the other object in the display list.
*
* Both objects must belong to the same display list, or parent container.
*
* This method does not change this Game Objects `depth` value, it simply alters its list position.
*
* @method Phaser.GameObjects.Components.Depth#setAbove
* @since 3.85.0
*
* @param {Phaser.GameObjects.GameObject} gameObject - The Game Object that this Game Object will be moved to be above.
*
* @return {this} This Game Object instance.
*/
setAbove: function (gameObject)
{
var list = this.getDisplayList();
if (list && gameObject)
{
ArrayUtils.MoveAbove(list, this, gameObject);
}
return this;
},
/**
* Move this Game Object so that it appears below the given Game Object.
*
* This means it will render immediately under the other object in the display list.
*
* Both objects must belong to the same display list, or parent container.
*
* This method does not change this Game Objects `depth` value, it simply alters its list position.
*
* @method Phaser.GameObjects.Components.Depth#setBelow
* @since 3.85.0
*
* @param {Phaser.GameObjects.GameObject} gameObject - The Game Object that this Game Object will be moved to be below.
*
* @return {this} This Game Object instance.
*/
setBelow: function (gameObject)
{
var list = this.getDisplayList();
if (list && gameObject)
{
ArrayUtils.MoveBelow(list, this, gameObject);
}
return this;
}
};
module.exports = Depth;