Skip to main content

Class: abstract M2Node

Extended by​

Implements​

Constructors​

new M2Node()​

new M2Node(options): M2Node

Parameters​

• options: M2NodeOptions = {}

Returns​

M2Node

Defined in​

m2c2kit/packages/core/src/M2Node.ts:144

Properties​

_alpha​

_alpha: number = 1.0

Defined in​

m2c2kit/packages/core/src/M2Node.ts:99


_draggable​

protected _draggable: boolean = false

Defined in​

m2c2kit/packages/core/src/M2Node.ts:102


_game?​

optional _game: Game

Defined in​

m2c2kit/packages/core/src/M2Node.ts:106


_hidden​

protected _hidden: boolean = false

Defined in​

m2c2kit/packages/core/src/M2Node.ts:103


_isUserInteractionEnabled​

protected _isUserInteractionEnabled: boolean = false

Defined in​

m2c2kit/packages/core/src/M2Node.ts:101


_position​

_position: Point

Defined in​

m2c2kit/packages/core/src/M2Node.ts:97


_scale​

_scale: number = 1.0

Defined in​

m2c2kit/packages/core/src/M2Node.ts:98


_size​

protected _size: Size

Defined in​

m2c2kit/packages/core/src/M2Node.ts:110


_zRotation​

_zRotation: number = 0

Defined in​

m2c2kit/packages/core/src/M2Node.ts:100


absoluteAlpha​

absoluteAlpha: number = 1.0

Defined in​

m2c2kit/packages/core/src/M2Node.ts:112


absoluteAlphaChange​

absoluteAlphaChange: number = 0

Defined in​

m2c2kit/packages/core/src/M2Node.ts:113


absolutePosition​

absolutePosition: Point

Defined in​

m2c2kit/packages/core/src/M2Node.ts:109


absoluteScale​

absoluteScale: number = 1.0

Defined in​

m2c2kit/packages/core/src/M2Node.ts:111


actions​

actions: Action[]

Defined in​

m2c2kit/packages/core/src/M2Node.ts:114


children​

children: M2Node[]

Defined in​

m2c2kit/packages/core/src/M2Node.ts:108


constructionIso8601TimeStamp​

constructionIso8601TimeStamp: string

Defined in​

m2c2kit/packages/core/src/M2Node.ts:93


constructionSequence​

constructionSequence: number

Defined in​

m2c2kit/packages/core/src/M2Node.ts:94


constructionTimeStamp​

constructionTimeStamp: number

Defined in​

m2c2kit/packages/core/src/M2Node.ts:92


dragging​

dragging: boolean = false

Is the node in a dragging state?

Defined in​

m2c2kit/packages/core/src/M2Node.ts:142


draggingLastPointerOffset​

draggingLastPointerOffset: Point

What was the previous pointer offset when the node was in a dragging state?

Defined in​

m2c2kit/packages/core/src/M2Node.ts:140


eventListeners​

eventListeners: M2NodeEventListener<M2NodeEvent>[]

Defined in​

m2c2kit/packages/core/src/M2Node.ts:116


isDrawable​

isDrawable: boolean = false

Defined in​

m2c2kit/packages/core/src/M2Node.ts:87


isShape​

isShape: boolean = false

Defined in​

m2c2kit/packages/core/src/M2Node.ts:88


isText​

isText: boolean = false

Defined in​

m2c2kit/packages/core/src/M2Node.ts:89


layout​

layout: Layout = {}

FOR INTERNAL USE ONLY

Implementation of​

M2NodeOptions.layout

Defined in​

m2c2kit/packages/core/src/M2Node.ts:104


loopMessages​

loopMessages: Set<string>

Defined in​

m2c2kit/packages/core/src/M2Node.ts:122


name​

name: string

Name of the node. Only needed if the node will be referred to by name in a later function

Implementation of​

M2NodeOptions.name

Defined in​

m2c2kit/packages/core/src/M2Node.ts:96


needsInitialization​

needsInitialization: boolean = true

Defined in​

m2c2kit/packages/core/src/M2Node.ts:118


nodeEvents​

nodeEvents: M2Event<M2Node>[]

Defined in​

m2c2kit/packages/core/src/M2Node.ts:123


options​

options: M2NodeOptions

Defined in​

m2c2kit/packages/core/src/M2Node.ts:91


parent?​

optional parent: M2Node

Defined in​

m2c2kit/packages/core/src/M2Node.ts:107


pressed​

pressed: boolean = false

Is the node in a pressed state? E.g., did the user put the pointer down on the node and not yet release it?

Defined in​

m2c2kit/packages/core/src/M2Node.ts:127


pressedAndWithinHitArea​

pressedAndWithinHitArea: boolean = false

Is the node in a pressed state AND is the pointer within the node's hit area? For example, a user may put the pointer down on the node, but then move the pointer, while still down, beyond the node's hit area. In this case, pressed = true, but pressedAndWithinHitArea = false.

Defined in​

m2c2kit/packages/core/src/M2Node.ts:133


pressedInitialPointerOffset​

pressedInitialPointerOffset: Point

When the node initially enters the pressed state, what is the pointer offset? (offset from the canvas's origin to the pointer position). We save this because it will be needed if this press then led to a drag.

Defined in​

m2c2kit/packages/core/src/M2Node.ts:137


queuedAction?​

optional queuedAction: Action

Defined in​

m2c2kit/packages/core/src/M2Node.ts:115


type​

type: M2NodeType = M2NodeType.Node

Defined in​

m2c2kit/packages/core/src/M2Node.ts:86


userData​

userData: any = {}

Defined in​

m2c2kit/packages/core/src/M2Node.ts:121


uuid​

readonly uuid: string

Internal

Unique identifier (UUID). Will be generated automatically. For m2c2kit library use only

Implementation of​

M2NodeOptions.uuid

Defined in​

m2c2kit/packages/core/src/M2Node.ts:117


withinHitArea​

withinHitArea: boolean = false

Defined in​

m2c2kit/packages/core/src/M2Node.ts:128

Accessors​

alpha​

Get Signature​

get alpha(): number

Opacity of the node. 0 is fully transparent, 1 is fully opaque. Default is 1.0. Alpha has multiplicative inheritance. For example, if the node's parent is alpha .5 and this node's is alpha .4, then the node will appear with alpha .2.

Returns​

number

Set Signature​

set alpha(alpha): void

Opacity of the node. 0 is fully transparent, 1 is fully opaque. Default is 1.0. Alpha has multiplicative inheritance. For example, if the node's parent is alpha .5 and this node's is alpha .4, then the node will appear with alpha .2.

Parameters​

• alpha: number

Returns​

void

Opacity of the node. 0 is fully transparent, 1 is fully opaque. Default is 1.0. Alpha has multiplicative inheritance. For example, if the node's parent is alpha .5 and this node's is alpha .4, then the node will appear with alpha .2.

Implementation of​

M2NodeOptions.alpha

Defined in​

m2c2kit/packages/core/src/M2Node.ts:1442


ancestors​

Get Signature​

get ancestors(): M2Node[]

Returns all ancestor nodes, not including the node itself.

Returns​

M2Node[]

Defined in​

m2c2kit/packages/core/src/M2Node.ts:538


canvasKit​

Get Signature​

get canvasKit(): CanvasKit

Gets the scene that contains this node by searching up the ancestor tree recursively. Throws exception if node is not part of a scene.

Returns​

CanvasKit

Scene that contains this node

Defined in​

m2c2kit/packages/core/src/M2Node.ts:1334


completeNodeOptions​

Get Signature​

get protected completeNodeOptions(): M2NodeOptions

Returns​

M2NodeOptions

Defined in​

m2c2kit/packages/core/src/M2Node.ts:199


descendants​

Get Signature​

get descendants(): M2Node[]

Returns all descendant nodes.

Remarks​

Descendants are children and children of children, recursively.

Returns​

M2Node[]

Defined in​

m2c2kit/packages/core/src/M2Node.ts:525


draggable​

Get Signature​

get draggable(): boolean

Can the node be dragged?

Returns​

boolean

Set Signature​

set draggable(draggable): void

Can the node be dragged?

Parameters​

• draggable: boolean

Returns​

void

Can the node be dragged?

Implementation of​

M2NodeOptions.draggable

Defined in​

m2c2kit/packages/core/src/M2Node.ts:1478


game​

Get Signature​

get game(): Game

The game which this node is a part of.

Remarks​

Throws error if node is not part of the game object.

Returns​

Game

Defined in​

m2c2kit/packages/core/src/M2Node.ts:278


hidden​

Get Signature​

get hidden(): boolean

Is the node, and its children, hidden? (not displayed). Default is false

Returns​

boolean

Set Signature​

set hidden(hidden): void

Is the node, and its children, hidden? (not displayed). Default is false

Parameters​

• hidden: boolean

Returns​

void

Is the node, and its children, hidden? (not displayed). Default is false

Implementation of​

M2NodeOptions.hidden

Defined in​

m2c2kit/packages/core/src/M2Node.ts:1467


isPartOfComposite​

Get Signature​

get isPartOfComposite(): boolean

Is the node part of a composite? Default is false.

Remarks​

This property is for use by authors of Composite nodes. It is not intended for general use.

Returns​

boolean

Set Signature​

set isPartOfComposite(value): void

Is the node part of a composite? Default is false.

Remarks​

This property is for use by authors of Composite nodes. It is not intended for general use.

Parameters​

• value: boolean

Returns​

void

Is the node part of a composite? Default is false.

Remarks​

This property is for use by authors of Composite nodes. It is not intended for general use.

Implementation of​

M2NodeOptions.isPartOfComposite

Defined in​

m2c2kit/packages/core/src/M2Node.ts:1489


isUserInteractionEnabled​

Get Signature​

get isUserInteractionEnabled(): boolean

Does the node respond to user events, such as taps? Default is false

Returns​

boolean

Set Signature​

set isUserInteractionEnabled(isUserInteractionEnabled): void

Does the node respond to user events, such as taps? Default is false

Parameters​

• isUserInteractionEnabled: boolean

Returns​

void

Does the node respond to user events, such as taps? Default is false

Implementation of​

M2NodeOptions.isUserInteractionEnabled

Defined in​

m2c2kit/packages/core/src/M2Node.ts:1453


parentSceneAsNode​

Get Signature​

get parentSceneAsNode(): M2Node

Returns​

M2Node

Defined in​

m2c2kit/packages/core/src/M2Node.ts:1338


position​

Get Signature​

get position(): Point

Position of the node within its parent coordinate system. Default is (0, 0)

Returns​

Point

Set Signature​

set position(position): void

Position of the node within its parent coordinate system. Default is (0, 0)

Parameters​

• position: Point

Returns​

void

Position of the node within its parent coordinate system. Default is (0, 0)

Implementation of​

M2NodeOptions.position

Defined in​

m2c2kit/packages/core/src/M2Node.ts:1386


scale​

Get Signature​

get scale(): number

Scale of the node. Default is 1.0

Returns​

number

Set Signature​

set scale(scale): void

Scale of the node. Default is 1.0

Parameters​

• scale: number

Returns​

void

Scale of the node. Default is 1.0

Implementation of​

M2NodeOptions.scale

Defined in​

m2c2kit/packages/core/src/M2Node.ts:1431


size​

Get Signature​

get size(): Size

Returns​

Size

Set Signature​

set size(size): void

Parameters​

• size: Size

Returns​

void

Defined in​

m2c2kit/packages/core/src/M2Node.ts:1352


zRotation​

Get Signature​

get zRotation(): number

Rotation of the node around the Z axis. Unit is radians. Default is 0 (no rotation). zRotation has inheritance. In addition to this node's zRotation, all ancestors' zRotations will be applied.

Returns​

number

Set Signature​

set zRotation(zRotation): void

Rotation of the node around the Z axis. Unit is radians. Default is 0 (no rotation). zRotation has inheritance. In addition to this node's zRotation, all ancestors' zRotations will be applied.

Parameters​

• zRotation: number

Returns​

void

Rotation of the node around the Z axis. Unit is radians. Default is 0 (no rotation). zRotation has inheritance. In addition to this node's zRotation, all ancestors' zRotations will be applied.

Implementation of​

M2NodeOptions.zRotation

Defined in​

m2c2kit/packages/core/src/M2Node.ts:1420

Methods​

addChild()​

addChild(child): void

Adds a child to this parent node. Throws exception if the child's name is not unique with respect to other children of this parent, or if the child has already been added to another parent.

Parameters​

• child: M2Node

The child node to add

Returns​

void

Defined in​

m2c2kit/packages/core/src/M2Node.ts:347


addEventListener()​

addEventListener<T>(type, callback, callbackOptions?): void

Type Parameters​

• T extends M2NodeEvent

Parameters​

• type: string

• callback

• callbackOptions?: CallbackOptions

Returns​

void

Defined in​

m2c2kit/packages/core/src/M2Node.ts:790


descendant()​

descendant<T>(name): T

Searches all descendants by name and returns first matching node.

Type Parameters​

• T extends M2Node

Parameters​

• name: string

Name of the descendant node to return

Returns​

T

Remarks​

Descendants are children and children of children, recursively. Throws exception if no descendant with the given name is found.

Defined in​

m2c2kit/packages/core/src/M2Node.ts:508


dispose()​

dispose(): void

Frees up resources and breaks parent/child links.

Returns​

void

Remarks​

This should be overridden by derived classes to clean up specific resources (like Skia objects), and they should call super.dispose().

Defined in​

m2c2kit/packages/core/src/M2Node.ts:1183


drawChildren()​

drawChildren(canvas): void

Draws each child node that is Drawable and is not hidden, by zPosition order (highest zPosition on top).

Parameters​

• canvas: Canvas

CanvasKit canvas

Returns​

void

Defined in​

m2c2kit/packages/core/src/M2Node.ts:1210


duplicate()​

abstract duplicate(newName?): M2Node

Duplicates a node using deep copy.

Parameters​

• newName?: string

optional name of the new, duplicated node. If not provided, name will be the new uuid

Returns​

M2Node

Remarks​

This is a deep recursive clone (node and children). The uuid property of all duplicated nodes will be newly created, because uuid must be unique.

Defined in​

m2c2kit/packages/core/src/M2Node.ts:1270


getDrawableOptions()​

protected getDrawableOptions(): DrawableOptions

Returns​

DrawableOptions

Defined in​

m2c2kit/packages/core/src/M2Node.ts:1288


getNodeOptions()​

protected getNodeOptions(): M2NodeOptions

Returns​

M2NodeOptions

Defined in​

m2c2kit/packages/core/src/M2Node.ts:1272


getTextOptions()​

protected getTextOptions(): TextOptions

Returns​

TextOptions

Defined in​

m2c2kit/packages/core/src/M2Node.ts:1301


initialize()​

initialize(): void

Returns​

void

Defined in​

m2c2kit/packages/core/src/M2Node.ts:195


involvedInActionAffectingAppearance()​

involvedInActionAffectingAppearance(): boolean

Determines if this node or ancestor is part of an active action that affects it appearance.

Returns​

boolean

true if part of active action affecting appearance

Remarks​

This is used to determine if the node should be rendered with anti-aliasing or not. Anti-aliasing on some devices causes a new shader to be compiled during the action, which causes jank.

Defined in​

m2c2kit/packages/core/src/M2Node.ts:563


involvedInSceneTransition()​

involvedInSceneTransition(): boolean

Determines if the node is a transitioning Scene or a descendant of a transitioning Scene.

Returns​

boolean

true if transitioning

Defined in​

m2c2kit/packages/core/src/M2Node.ts:608


onDrag()​

onDrag(callback, options?): void

Executes a callback when the user continues dragging a node.

Parameters​

• callback

function to execute

• options?: CallbackOptions

CallbackOptions

Returns​

void

Defined in​

m2c2kit/packages/core/src/M2Node.ts:770


onDragEnd()​

onDragEnd(callback, options?): void

Executes a callback when the user stop dragging a node.

Parameters​

• callback

function to execute

• options?: CallbackOptions

CallbackOptions

Returns​

void

Defined in​

m2c2kit/packages/core/src/M2Node.ts:783


onDragStart()​

onDragStart(callback, options?): void

Executes a callback when the user begins dragging a node.

Parameters​

• callback

function to execute

• options?: CallbackOptions

CallbackOptions

Returns​

void

Defined in​

m2c2kit/packages/core/src/M2Node.ts:757


onPointerDown()​

onPointerDown(callback, options?): void

Executes a callback when the pointer first is down on the node.

Parameters​

• callback

function to execute

• options?: CallbackOptions

CallbackOptions

Returns​

void

Remarks​

PointerDown is a pointer down (mouse click or touches begin) within the bounds of the node. It occurs under the same conditions as TapDown.

Defined in​

m2c2kit/packages/core/src/M2Node.ts:698


onPointerLeave()​

onPointerLeave(callback, options?): void

Executes a callback when the user moves the pointer (mouse or touches) outside the bounds of the node.

Parameters​

• callback

function to execute

• options?: CallbackOptions

CallbackOptions

Returns​

void

Defined in​

m2c2kit/packages/core/src/M2Node.ts:744


onPointerMove()​

onPointerMove(callback, options?): void

Executes a callback when the user moves the pointer (mouse or touches) within the bounds of the node.

Parameters​

• callback

function to execute

• options?: CallbackOptions

CallbackOptions

Returns​

void

Defined in​

m2c2kit/packages/core/src/M2Node.ts:730


onPointerUp()​

onPointerUp(callback, options?): void

Executes a callback when the user releases a press from the node within the bounds of the node.

Parameters​

• callback

function to execute

• options?: CallbackOptions

CallbackOptions

Returns​

void

Remarks​

PointerUp is a pointer up (mouse click release or touches end) within the bounds of the node. It does not require that there was a previous PointerDown on the node.

Defined in​

m2c2kit/packages/core/src/M2Node.ts:716


onTapDown()​

onTapDown(callback, options?): void

Executes a callback when the user presses down on the node.

Parameters​

• callback

function to execute

• options?: CallbackOptions

CallbackOptions

Returns​

void

Remarks​

TapDown is a pointer down (mouse click or touches begin) within the bounds of the node.

Defined in​

m2c2kit/packages/core/src/M2Node.ts:627


onTapLeave()​

onTapLeave(callback, options?): void

Executes a callback when the user moves the pointer (mouse, touches) beyond the bounds of the node while the pointer is down.

Parameters​

• callback

function to execute

• options?: CallbackOptions

CallbackOptions

Returns​

void

Remarks​

TapLeave occurs when the pointer (mouse, touches) that has previously pressed the node moves beyond the bounds of the node before the press release.

Defined in​

m2c2kit/packages/core/src/M2Node.ts:682


onTapUp()​

onTapUp(callback, options?): void

Executes a callback when the user releases a press, that has been fully within the node, from the node.

Parameters​

• callback

function to execute

• options?: CallbackOptions

CallbackOptionsue.

Returns​

void

Remarks​

TapUp is a pointer up (mouse click release or touches end) within the bounds of the node and the pointer, while down, has never moved beyond the bounds of the node.

Defined in​

m2c2kit/packages/core/src/M2Node.ts:645


onTapUpAny()​

onTapUpAny(callback, options?): void

Executes a callback when the user releases a press from the node within the bounds of the node.

Parameters​

• callback

function to execute

• options?: CallbackOptions

CallbackOptions

Returns​

void

Remarks​

TapUpAny is a pointer up (mouse click release or touches end) within the bounds of the node and the pointer, while down, is allowed to have been beyond the bounds of the node during the press before the release.

Defined in​

m2c2kit/packages/core/src/M2Node.ts:664


removeAction()​

removeAction(key): void

Remove an action from this node. If the action is running, it will be stopped.

Parameters​

• key: string

key (string identifier) of the action to remove

Returns​

void

Defined in​

m2c2kit/packages/core/src/M2Node.ts:1246


removeAllActions()​

removeAllActions(): void

Remove all actions from this node. If actions are running, they will be stopped.

Returns​

void

Defined in​

m2c2kit/packages/core/src/M2Node.ts:1254


removeAllChildren()​

removeAllChildren(): void

Removes all children from the node.

Returns​

void

Defined in​

m2c2kit/packages/core/src/M2Node.ts:449


removeChild()​

removeChild(child): void

Removes the specific child from this parent node. Throws exception if this parent does not contain the child.

Parameters​

• child: M2Node

Returns​

void

Defined in​

m2c2kit/packages/core/src/M2Node.ts:459


removeChildren()​

removeChildren(children): void

Removes the children from the parent. Throws error if the parent does not contain all of the children.

Parameters​

• children: M2Node[]

An array of children to remove from the parent node

Returns​

void

Defined in​

m2c2kit/packages/core/src/M2Node.ts:488


run()​

run(action, key?): void

Runs an action on this node.

Parameters​

• action: Action

The action to run

• key?: string

key (string identifier) used to identify the action. Only needed if the action will be referred to later

Returns​

void

Remarks​

If the node is part of an active scene, the action runs immediately. Otherwise, the action will run when the node's scene becomes active. Calling run() multiple times on a node will add to existing actions, not replace them.

Defined in​

m2c2kit/packages/core/src/M2Node.ts:1230


saveEvent()​

protected saveEvent(event): void

Saves the node's event.

Parameters​

• event: M2Event<M2Node>

event to save

Returns​

void

Remarks​

If the game event store is not available, the event is saved within the node's nodeEvents event array. It will be added to the game event store when the node is added to the game.

Defined in​

m2c2kit/packages/core/src/M2Node.ts:262


saveNodeNewEvent()​

protected saveNodeNewEvent(): void

Save the node's construction event in the event store.

Returns​

void

Defined in​

m2c2kit/packages/core/src/M2Node.ts:208


savePropertyChangeEvent()​

protected savePropertyChangeEvent(property, value): void

Saves the node's property change event in the event store.

Parameters​

• property: string

property name

• value: undefined | null | string | number | boolean | object

property value

Returns​

void

Defined in​

m2c2kit/packages/core/src/M2Node.ts:235


toString()​

toString(): string

Overrides toString() and returns a human-friendly description of the node.

Returns​

string

Remarks​

Inspiration from https://stackoverflow.com/a/35361695

Defined in​

m2c2kit/packages/core/src/M2Node.ts:327


update()​

update(): void

Returns​

void

Defined in​

m2c2kit/packages/core/src/M2Node.ts:948