Class: DisplayObject

PIXI.DisplayObject

The base class for all objects that are rendered on the screen.

This is an abstract class and can not be used on its own; rather it should be extended.

Display objects implemented in PixiJS

Display Object Description
PIXI.Container Adds support for children to DisplayObject
PIXI.Graphics Shape-drawing display object similar to the Canvas API
PIXI.Sprite Draws textures (i.e. images)
PIXI.Text Draws text using the Canvas API internally
PIXI.BitmapText More scaleable solution for text rendering, reusing glyph textures
PIXI.TilingSprite Draws textures/images in a tiled fashion
PIXI.AnimatedSprite Draws an animation of multiple images
PIXI.Mesh Provides a lower-level API for drawing meshes with custom data
PIXI.NineSlicePlane Mesh-related
PIXI.SimpleMesh v4-compatibile mesh
PIXI.SimplePlane Mesh-related
PIXI.SimpleRope Mesh-related

Transforms

The transform of a display object describes the projection from its local coordinate space to its parent's local coordinate space. The following properties are derived from the transform:

Property Description
pivot Invariant under rotation, scaling, and skewing. The projection of into the parent's space of the pivot is equal to position, regardless of the other three transformations. In other words, It is the center of rotation, scaling, and skewing.
position Translation. This is the position of the pivot in the parent's local space. The default value of the pivot is the origin (0,0). If the top-left corner of your display object is (0,0) in its local space, then the position will be its top-left corner in the parent's local space.
scale Scaling. This will stretch (or compress) the display object's projection. The scale factors are along the local coordinate axes. In other words, the display object is scaled before rotated or skewed. The center of scaling is the pivot.
rotation Rotation. This will rotate the display object's projection by this angle (in radians).
skew

Skewing. This can be used to deform a rectangular display object into a parallelogram.

In PixiJS, skew has a slightly different behaviour than the conventional meaning. It can be thought of the net rotation applied to the coordinate axes (separately). For example, if "skew.x" is ⍺ and "skew.y" is β, then the line x = 0 will be rotated by ⍺ (y = -x*cot⍺) and the line y = 0 will be rotated by β (y = x*tanβ). A line y = x*tanϴ (i.e. a line at angle ϴ to the x-axis in local-space) will be rotated by an angle between ⍺ and β.

It can be observed that if skew is applied equally to both axes, then it will be equivalent to applying a rotation. Indeed, if "skew.x" = -ϴ and "skew.y" = ϴ, it will produce an equivalent of "rotation" = ϴ.

Another quite interesting observation is that "skew.x", "skew.y", rotation are communtative operations. Indeed, because rotation is essentially a careful combination of the two.

angle Rotation. This is an alias for rotation, but in degrees.
x Translation. This is an alias for position.x!
y Translation. This is an alias for position.y!
width Implemented in Container. Scaling. The width property calculates scale.x by dividing the "requested" width by the local bounding box width. It is indirectly an abstraction over scale.x, and there is no concept of user-defined width.
height Implemented in Container. Scaling. The height property calculates scale.y by dividing the "requested" height by the local bounding box height. It is indirectly an abstraction over scale.y, and there is no concept of user-defined height.

Bounds

The bounds of a display object is defined by the minimum axis-aligned rectangle in world space that can fit around it. The abstract calculateBounds method is responsible for providing it (and it should use the worldTransform to calculate in world space).

There are a few additional types of bounding boxes:

Bounds Description
World Bounds This is synonymous is the regular bounds described above. See getBounds().
Local Bounds This the axis-aligned bounding box in the parent's local space. See getLocalBounds().
Render Bounds The bounds, but including extra rendering effects like filter padding.
Projected Bounds The bounds of the projected display object onto the screen. Usually equals world bounds.
Relative Bounds The bounds of a display object when projected onto a ancestor's (or parent's) space.
Natural Bounds The bounds of an object in its own local space (not parent's space, like in local bounds)
Content Bounds The natural bounds when excluding all children of a Container.

calculateBounds

Container already implements calculateBounds in a manner that includes children.

But for a non-Container display object, the calculateBounds method must be overriden in order for getBounds and getLocalBounds to work. This method must write the bounds into this._bounds.

Generally, the following technique works for most simple cases: take the list of points forming the "hull" of the object (i.e. outline of the object's shape), and then add them using PIXI.Bounds#addPointMatrix.

calculateBounds(): void
{
    const points = [...];

    for (let i = 0, j = points.length; i < j; i++)
    {
        this._bounds.addPointMatrix(this.worldTransform, points[i]);
    }
}

You can optimize this for a large number of points by using PIXI.Bounds#addVerticesMatrix to pass them in one array together.

Alpha

This alpha sets a display object's relative opacity w.r.t its parent. For example, if the alpha of a display object is 0.5 and its parent's alpha is 0.5, then it will be rendered with 25% opacity (assuming alpha is not applied on any ancestor further up the chain).

The alpha with which the display object will be rendered is called the worldAlpha.

Renderable vs Visible

The renderable and visible properties can be used to prevent a display object from being rendered to the screen. However, there is a subtle difference between the two. When using renderable, the transforms of the display object (and its children subtree) will continue to be calculated. When using visible, the transforms will not be calculated.

It is recommended that applications use the renderable property for culling. See @pixi-essentials/cull or pixi-cull for more details.

Otherwise, to prevent an object from rendering in the general-purpose sense - visible is the property to use. This one is also better in terms of performance.

Extends

Members

_accessibleActive boolean

TODO
  • Needs docs.

_accessibleDiv boolean

TODO
  • Needs docs.

_bounds PIXI.Bounds

The bounds object, this is used to calculate and store the bounds of the displayObject.

_localBounds PIXI.Bounds

Local bounds object, swapped with _bounds when using getLocalBounds().

accessible boolean

Flag for if the object is accessible. If true AccessibilityManager will overlay a shadow div with attributes set

accessibleChildren boolean

Setting to false will prevent any children inside this container to be accessible. Defaults to true.

Default Value:
  • true

accessibleHint string

Sets the aria-label attribute of the shadow div

accessiblePointerEvents string

Specify the pointer-events the accessible div will use Defaults to auto.

Default Value:
  • 'auto'

accessibleTitle ?string

Sets the title attribute of the shadow div If accessibleTitle AND accessibleHint has not been this will default to 'displayObject [tabIndex]'

accessibleType string

Specify the type of div the accessible layer is. Screen readers treat the element differently depending on this type. Defaults to button.

Default Value:
  • 'button'

alpha number

The opacity of the object.

angle number

The angle of the object in degrees. 'rotation' and 'angle' have the same effect on a display object; rotation is in radians, angle is in degrees.

buttonMode boolean

If enabled, the mouse cursor use the pointer behavior when hovered over the displayObject if it is interactive Setting this changes the 'cursor' property to 'pointer'.

Example

 const sprite = new PIXI.Sprite(texture);
 sprite.interactive = true;
 sprite.buttonMode = true;

cacheAsBitmap boolean

Set this to true if you want this display object to be cached as a bitmap. This basically takes a snap shot of the display object as it is at that moment. It can provide a performance benefit for complex static displayObjects. To remove simply set this property to false

IMPORTANT GOTCHA - Make sure that all your textures are preloaded BEFORE setting this property to true as it will take a snapshot of what is currently there. If the textures have not loaded then they will not appear.

cursor string

This defines what cursor mode is used when the mouse cursor is hovered over the displayObject.

See:
Example

 const sprite = new PIXI.Sprite(texture);
 sprite.interactive = true;
 sprite.cursor = 'wait';

filterArea ?PIXI.Rectangle

The area the filter is applied to. This is used as more of an optimization rather than figuring out the dimensions of the displayObject each frame you can set this rectangle.

Also works as an interaction mask.

filters Array<PIXI.Filter>

Sets the filters for the displayObject.

  • IMPORTANT: This is a WebGL only feature and will be ignored by the canvas renderer. To remove filters simply set this property to 'null'.

hitArea PIXI.IHitArea

Interaction shape. Children will be hit first, then this shape will be checked. Setting this will cause this shape to be checked in hit tests rather than the displayObject's bounds.

Example

 const sprite = new PIXI.Sprite(texture);
 sprite.interactive = true;
 sprite.hitArea = new PIXI.Rectangle(0, 0, 100, 100);

interactive boolean

Enable interaction events for the DisplayObject. Touch, pointer and mouse events will not be emitted unless interactive is set to true.

Example

 const sprite = new PIXI.Sprite(texture);
 sprite.interactive = true;
 sprite.on('tap', (event) => {
    //handle event
 });

isMask boolean

Does any other displayObject use this object as a mask?

isSprite boolean

used to fast check if a sprite is.. a sprite!

localTransform PIXI.Matrix

Current transform of the object based on local factors: position, scale, other stuff.

mask PIXI.Container | PIXI.MaskData | unknown

Sets a mask for the displayObject. A mask is an object that limits the visibility of an object to the shape of the mask applied to it. In PixiJS a regular mask must be a PIXI.Graphics or a PIXI.Sprite object. This allows for much faster masking in canvas as it utilities shape clipping. To remove a mask, set this property to null.

For sprite mask both alpha and red channel are used. Black mask is the same as transparent mask.

TODO
  • At the moment, PIXI.CanvasRenderer doesn't support PIXI.Sprite as mask.
Example

 const graphics = new PIXI.Graphics();
 graphics.beginFill(0xFF3300);
 graphics.drawRect(50, 250, 100, 100);
 graphics.endFill();

 const sprite = new PIXI.Sprite(texture);
 sprite.mask = graphics;

name string

The instance name of the object.

The display object container that contains this display object.

The center of rotation, scaling, and skewing for this display object in its local space. The position is the projection of pivot in the parent's local space.

By default, the pivot is the origin (0, 0).

Since:
  • PixiJS 4

The coordinate of the object relative to the local coordinates of the parent.

Since:
  • PixiJS 4

renderable boolean

Can this object be rendered, if false the object will not be drawn but the updateTransform methods will still be called.

Only affects recursive calls from parent. You can ask for bounds manually.

rotation number

The rotation of the object in radians. 'rotation' and 'angle' have the same effect on a display object; rotation is in radians, angle is in degrees.

The scale factors of this object along the local coordinate axes.

The default scale is (1, 1).

Since:
  • PixiJS 4

The skew factor for the object in radians.

Since:
  • PixiJS 4

transform PIXI.Transform

World transform and local transform of this object. This will become read-only later, please do not assign anything there unless you know what are you doing.

visible boolean

The visibility of the object. If false the object will not be drawn, and the updateTransform function will not be called.

Only affects recursive calls from parent. You can ask for bounds or call updateTransform manually.

worldAlpha number

The multiplied alpha of the displayObject.

worldTransform PIXI.Matrix

Current transform of the object based on world (parent) factors.

worldVisible boolean

Indicates if the object is globally visible.

x number

The position of the displayObject on the x axis relative to the local coordinates of the parent. An alias to position.x

y number

The position of the displayObject on the y axis relative to the local coordinates of the parent. An alias to position.y

zIndex number

The zIndex of the displayObject.

If a container has the sortableChildren property set to true, children will be automatically sorted by zIndex value; a higher value will mean it will be moved towards the end of the array, and thus rendered on top of other display objects within the same container.

See:

_boundsID number protected

Flags the cached bounds as dirty.

_boundsRect PIXI.Bounds protected

Cache of this display-object's bounds-rectangle.

_destroyed boolean protected

If the object has been destroyed via destroy(). If true, it should not be used.

_enabledFilters Array<PIXI.Filter> protected

Currently enabled filters

_lastSortedIndex number protected

Which index in the children array the display component was before the previous zIndex sort. Used by containers to help sort objects with the same zIndex, by using previous array index as the decider.

_localBoundsRect PIXI.Bounds protected

Cache of this display-object's local-bounds rectangle.

_mask PIXI.Container | PIXI.MaskData | unknown protected

The original, cached mask of the object.

_tempDisplayObjectParent PIXI.Container protected

_zIndex number protected

The zIndex of the displayObject. A higher value will mean it will be rendered on top of other displayObjects within the same container.

Methods

PIXI.DisplayObject.mixin (source) void static

Mixes all enumerable properties and methods from a source object to DisplayObject.

Name Type Description
source object

The source of properties and methods to mix in.

_recursivePostUpdateTransform () void

Recursively updates transform of all objects from the root to this one internal function for toLocal()

calculateBounds () void abstract

Recalculates the bounds of the display object.

destroy (_options) void

Base destroy method for generic display objects. This will automatically remove the display object from its parent Container as well as remove all current event listeners and internal references. Do not use a DisplayObject after calling destroy().

Name Type Attributes Description
_options IDestroyOptions | boolean <optional>

disableTempParent (cacheParent) void

Pair method for enableTempParent

Name Type Description
cacheParent PIXI.DisplayObject

Actual parent of element

displayObjectUpdateTransform

DisplayObject default updateTransform, does not update children of container. Will crash if there's no parent element.

Used in Renderer, cacheAsBitmap and other places where you call an updateTransform on root

const cacheParent = elem.enableTempParent();
elem.updateTransform();
elem.disableTempParent(cacheParent);
Returns:
Type Description
PIXI.DisplayObject current parent

getBounds (skipUpdate, rect) PIXI.Rectangle

Calculates and returns the (world) bounds of the display object as a Rectangle.

This method is expensive on containers with a large subtree (like the stage). This is because the bounds of a container depend on its children's bounds, which recursively causes all bounds in the subtree to be recalculated. The upside, however, is that calling getBounds once on a container will indeed update the bounds of all children (the whole subtree, in fact). This side effect should be exploited by using displayObject._bounds.getRectangle() when traversing through all the bounds in a scene graph. Otherwise, calling getBounds on each object in a subtree will cause the total cost to increase quadratically as its height increases.

  • The transforms of all objects in a container's subtree and of all ancestors are updated.
  • The world bounds of all display objects in a container's subtree will also be recalculated.

The _bounds object stores the last calculation of the bounds. You can use to entirely skip bounds calculation if needed.

const lastCalculatedBounds = displayObject._bounds.getRectangle(optionalRect);

Do know that usage of getLocalBounds can corrupt the _bounds of children (the whole subtree, actually). This is a known issue that has not been solved. See getLocalBounds for more details.

getBounds should be called with skipUpdate equal to true in a render() call. This is because the transforms are guaranteed to be update-to-date. In fact, recalculating inside a render() call may cause corruption in certain cases.

Name Type Attributes Description
skipUpdate boolean <optional>

Setting to true will stop the transforms of the scene graph from being updated. This means the calculation returned MAY be out of date BUT will give you a nice performance boost.

rect PIXI.Rectangle <optional>

Optional rectangle to store the result of the bounds calculation.

Returns:
Type Description
PIXI.Rectangle The minimum axis-aligned rectangle in world space that fits around this object.

getGlobalPosition (point, skipUpdate) PIXI.Point

Returns the global position of the displayObject. Does not depend on object scale, rotation and pivot.

Name Type Attributes Default Description
point PIXI.Point <optional>
new PIXI.Point()

The point to write the global value to.

skipUpdate boolean <optional>
false

Setting to true will stop the transforms of the scene graph from being updated. This means the calculation returned MAY be out of date BUT will give you a nice performance boost.

Returns:
Type Description
PIXI.Point The updated point.

getLocalBounds (rect) PIXI.Rectangle

Retrieves the local bounds of the displayObject as a rectangle object.

Name Type Attributes Description
rect PIXI.Rectangle <optional>

Optional rectangle to store the result of the bounds calculation.

Returns:
Type Description
PIXI.Rectangle The rectangular bounding area.

render (renderer) void abstract

Renders the object using the WebGL renderer.

Name Type Description
renderer PIXI.Renderer

The renderer.

setParent (container) PIXI.Container

Set the parent Container of this DisplayObject.

Name Type Description
container PIXI.Container

The Container to add this DisplayObject to.

Returns:
Type Description
PIXI.Container The Container that this DisplayObject was added to.

setTransform (x, y, scaleX, scaleY, rotation, skewX, skewY, pivotX, pivotY) PIXI.DisplayObject

Convenience function to set the position, scale, skew and pivot at once.

Name Type Attributes Default Description
x number <optional>
0

The X position

y number <optional>
0

The Y position

scaleX number <optional>
1

The X scale value

scaleY number <optional>
1

The Y scale value

rotation number <optional>
0

The rotation

skewX number <optional>
0

The X skew value

skewY number <optional>
0

The Y skew value

pivotX number <optional>
0

The X pivot value

pivotY number <optional>
0

The Y pivot value

Returns:
Type Description
PIXI.DisplayObject The DisplayObject instance

toGlobal (position, point, skipUpdate) PIXI.Point

Calculates the global position of the display object.

Name Type Attributes Default Description
position PIXI.IPointData

The world origin to calculate from.

point PIXI.Point <optional>

A Point object in which to store the value, optional (otherwise will create a new Point).

skipUpdate boolean <optional>
false

Should we skip the update transform.

Returns:
Type Description
PIXI.Point A point object representing the position of this object.

toLocal (position, from, point, skipUpdate) PIXI.Point

Calculates the local position of the display object relative to another point.

Name Type Attributes Default Description
position PIXI.IPointData

The world origin to calculate from.

from PIXI.DisplayObject <optional>

The DisplayObject to calculate the global position from.

point PIXI.Point <optional>

A Point object in which to store the value, optional (otherwise will create a new Point).

skipUpdate boolean <optional>
false

Should we skip the update transform

Returns:
Type Description
PIXI.Point A point object representing the position of this object

updateTransform () void

Updates the object transform for rendering.

TODO - Optimization pass!

Events

Fired when a pointer device button (usually a mouse left-button) is pressed and released on the display object. DisplayObject's interactive property must be set to true to fire event.

Name Type Description
event PIXI.InteractionEvent

Interaction event

Fired when a pointer device button (usually a mouse left-button) is pressed on the display. object. DisplayObject's interactive property must be set to true to fire event.

Name Type Description
event PIXI.InteractionEvent

Interaction event

Fired when a pointer device (usually a mouse) is moved while over the display object. DisplayObject's interactive property must be set to true to fire event.

Name Type Description
event PIXI.InteractionEvent

Interaction event

Fired when a pointer device (usually a mouse) is moved off the display object. DisplayObject's interactive property must be set to true to fire event.

Name Type Description
event PIXI.InteractionEvent

Interaction event

Fired when a pointer device (usually a mouse) is moved onto the display object. DisplayObject's interactive property must be set to true to fire event.

Name Type Description
event PIXI.InteractionEvent

Interaction event

Fired when a pointer device button (usually a mouse left-button) is released over the display object. DisplayObject's interactive property must be set to true to fire event.

Name Type Description
event PIXI.InteractionEvent

Interaction event

mouseupoutside

Fired when a pointer device button (usually a mouse left-button) is released outside the display object that initially registered a mousedown. DisplayObject's interactive property must be set to true to fire event.

Name Type Description
event PIXI.InteractionEvent

Interaction event

Fired when the operating system cancels a pointer event. DisplayObject's interactive property must be set to true to fire event.

Name Type Description
event PIXI.InteractionEvent

Interaction event

Fired when a pointer device button is pressed on the display object. DisplayObject's interactive property must be set to true to fire event.

Name Type Description
event PIXI.InteractionEvent

Interaction event

Fired when a pointer device is moved while over the display object. DisplayObject's interactive property must be set to true to fire event.

Name Type Description
event PIXI.InteractionEvent

Interaction event

Fired when a pointer device is moved off the display object. DisplayObject's interactive property must be set to true to fire event.

Name Type Description
event PIXI.InteractionEvent

Interaction event

Fired when a pointer device is moved onto the display object. DisplayObject's interactive property must be set to true to fire event.

Name Type Description
event PIXI.InteractionEvent

Interaction event

Fired when a pointer device button is pressed and released on the display object. DisplayObject's interactive property must be set to true to fire event.

Name Type Description
event PIXI.InteractionEvent

Interaction event

Fired when a pointer device button is released over the display object. DisplayObject's interactive property must be set to true to fire event.

Name Type Description
event PIXI.InteractionEvent

Interaction event

pointerupoutside

Fired when a pointer device button is released outside the display object that initially registered a pointerdown. DisplayObject's interactive property must be set to true to fire event.

Name Type Description
event PIXI.InteractionEvent

Interaction event

removedFrom

Fired when a DisplayObject is removed from this Container.

Name Type Description
child PIXI.DisplayObject

The child removed from the Container.

container PIXI.Container

The container that removed removed the child.

index number

The former children's index of the removed child

Fired when a pointer device secondary button (usually a mouse right-button) is pressed and released on the display object. DisplayObject's interactive property must be set to true to fire event.

Name Type Description
event PIXI.InteractionEvent

Interaction event

Fired when a pointer device secondary button (usually a mouse right-button) is pressed on the display object. DisplayObject's interactive property must be set to true to fire event.

Name Type Description
event PIXI.InteractionEvent

Interaction event

Fired when a pointer device secondary button (usually a mouse right-button) is released over the display object. DisplayObject's interactive property must be set to true to fire event.

Name Type Description
event PIXI.InteractionEvent

Interaction event

rightupoutside

Fired when a pointer device secondary button (usually a mouse right-button) is released outside the display object that initially registered a rightdown. DisplayObject's interactive property must be set to true to fire event.

Name Type Description
event PIXI.InteractionEvent

Interaction event

Fired when a touch point is placed and removed from the display object. DisplayObject's interactive property must be set to true to fire event.

Name Type Description
event PIXI.InteractionEvent

Interaction event

Fired when the operating system cancels a touch. DisplayObject's interactive property must be set to true to fire event.

Name Type Description
event PIXI.InteractionEvent

Interaction event

Fired when a touch point is removed from the display object. DisplayObject's interactive property must be set to true to fire event.

Name Type Description
event PIXI.InteractionEvent

Interaction event

touchendoutside

Fired when a touch point is removed outside of the display object that initially registered a touchstart. DisplayObject's interactive property must be set to true to fire event.

Name Type Description
event PIXI.InteractionEvent

Interaction event

Fired when a touch point is moved along the display object. DisplayObject's interactive property must be set to true to fire event.

Name Type Description
event PIXI.InteractionEvent

Interaction event

Fired when a touch point is placed on the display object. DisplayObject's interactive property must be set to true to fire event.

Name Type Description
event PIXI.InteractionEvent

Interaction event

Fired when this DisplayObject is added to a Container.

Name Type Description
container PIXI.Container

The container added to.

Fired when this DisplayObject is removed from a Container.

Name Type Description
container PIXI.Container

The container removed from.