Skip to main content

Class: Scene

Extends

Implements

Constructors

new Scene()

new Scene(options): Scene

Top-level node that holds all other nodes, such as sprites, rectangles, or labels, that will be displayed on the screen

Parameters

options: SceneOptions= {}

SceneOptions

Returns

Scene

Overrides

M2Node.constructor

Remarks

The scene is the game screen or stage, and fills the entire available screen. There are usually multiple screens to contain multiple stages of the game, such as various instruction pages or phases of a game.

Source

Scene.ts:36

Properties

_active

_active: boolean = false

Source

Scene.ts:25


_alpha

_alpha: number = 1.0

Inherited from

M2Node._alpha

Source

M2Node.ts:98


_anchorPoint

private _anchorPoint: Point

Source

Scene.ts:20


_backgroundColor

private _backgroundColor: RgbaColor = Constants.DEFAULT_SCENE_BACKGROUND_COLOR

Source

Scene.ts:23


_draggable

protected _draggable: boolean = false

Inherited from

M2Node._draggable

Source

M2Node.ts:101


_game?

optional _game: Game

Inherited from

M2Node._game

Source

M2Node.ts:105


_hidden

protected _hidden: boolean = false

Inherited from

M2Node._hidden

Source

M2Node.ts:102


_isUserInteractionEnabled

protected _isUserInteractionEnabled: boolean = false

Inherited from

M2Node._isUserInteractionEnabled

Source

M2Node.ts:100


_position

_position: Point

Inherited from

M2Node._position

Source

M2Node.ts:96


_scale

_scale: number = 1.0

Inherited from

M2Node._scale

Source

M2Node.ts:97


_size

protected _size: Size

Inherited from

M2Node._size

Source

M2Node.ts:109


_transitioning

_transitioning: boolean = false

Source

Scene.ts:26


_zPosition

private _zPosition: number = 0

Source

Scene.ts:21


_zRotation

_zRotation: number = 0

Inherited from

M2Node._zRotation

Source

M2Node.ts:99


absoluteAlpha

absoluteAlpha: number = 1.0

Inherited from

M2Node.absoluteAlpha

Source

M2Node.ts:111


absoluteAlphaChange

absoluteAlphaChange: number = 0

Inherited from

M2Node.absoluteAlphaChange

Source

M2Node.ts:112


absolutePosition

absolutePosition: Point

Inherited from

M2Node.absolutePosition

Source

M2Node.ts:108


absoluteScale

absoluteScale: number = 1.0

Inherited from

M2Node.absoluteScale

Source

M2Node.ts:110


actions

actions: Action[]

Inherited from

M2Node.actions

Source

M2Node.ts:113


backgroundPaint?

private optional backgroundPaint: Paint

Source

Scene.ts:27


children

children: M2Node[]

Inherited from

M2Node.children

Source

M2Node.ts:107


constructionIso8601TimeStamp

constructionIso8601TimeStamp: string

Inherited from

M2Node.constructionIso8601TimeStamp

Source

M2Node.ts:92


constructionSequence

constructionSequence: number

Inherited from

M2Node.constructionSequence

Source

M2Node.ts:93


constructionTimeStamp

constructionTimeStamp: number

Inherited from

M2Node.constructionTimeStamp

Source

M2Node.ts:91


dragging

dragging: boolean = false

Is the node in a dragging state?

Inherited from

M2Node.dragging

Source

M2Node.ts:141


draggingLastPointerOffset

draggingLastPointerOffset: Point

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

Inherited from

M2Node.draggingLastPointerOffset

Source

M2Node.ts:139


eventListeners

eventListeners: M2NodeEventListener<M2NodeEvent>[]

Inherited from

M2Node.eventListeners

Source

M2Node.ts:115


isDrawable

isDrawable: boolean = true

Overrides

M2Node.isDrawable

Source

Scene.ts:18


isShape

isShape: boolean = false

Inherited from

M2Node.isShape

Source

M2Node.ts:87


isText

isText: boolean = false

Inherited from

M2Node.isText

Source

M2Node.ts:88


layout

layout: Layout = {}

FOR INTERNAL USE ONLY

Implementation of

SceneOptions.layout

Inherited from

M2Node.layout

Source

M2Node.ts:103


loopMessages

loopMessages: Set<string>

Inherited from

M2Node.loopMessages

Source

M2Node.ts:121


name

name: string

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

Implementation of

SceneOptions.name

Inherited from

M2Node.name

Source

M2Node.ts:95


needsInitialization

needsInitialization: boolean = true

Inherited from

M2Node.needsInitialization

Source

M2Node.ts:117


nodeEvents

nodeEvents: M2Event<M2Node>[]

Inherited from

M2Node.nodeEvents

Source

M2Node.ts:122


options

options: M2NodeOptions

Inherited from

M2Node.options

Source

M2Node.ts:90


parent?

optional parent: M2Node

Inherited from

M2Node.parent

Source

M2Node.ts:106


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?

Inherited from

M2Node.pressed

Source

M2Node.ts:126


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.

Inherited from

M2Node.pressedAndWithinHitArea

Source

M2Node.ts:132


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.

Inherited from

M2Node.pressedInitialPointerOffset

Source

M2Node.ts:136


queuedAction?

optional queuedAction: Action

Inherited from

M2Node.queuedAction

Source

M2Node.ts:114


type

readonly type: Scene = M2NodeType.Scene

Overrides

M2Node.type

Source

Scene.ts:17


userData

userData: any = {}

Inherited from

M2Node.userData

Source

M2Node.ts:120


uuid

Internal

readonly uuid: string

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

Implementation of

SceneOptions.uuid

Inherited from

M2Node.uuid

Source

M2Node.ts:116


withinHitArea

withinHitArea: boolean = false

Inherited from

M2Node.withinHitArea

Source

M2Node.ts:127

Accessors

alpha

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.

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

number

Source

M2Node.ts:1383


ancestors

get ancestors(): M2Node[]

Returns all ancestor nodes, not including the node itself.

Returns

M2Node[]

Source

M2Node.ts:537


anchorPoint

get anchorPoint(): Point

Point within the node that determines its position. Default is { x: 0.5, y: 0.5 }, which centers the node on its position

set anchorPoint(anchorPoint): void

Point within the node that determines its position. Default is { x: 0.5, y: 0.5 }, which centers the node on its position

Parameters

anchorPoint: Point

Returns

Point

Source

Scene.ts:101


backgroundColor

get backgroundColor(): RgbaColor

Background color of the scene. Default is Constants.DEFAULT_SCENE_BACKGROUND_COLOR (WebColors.White)

set backgroundColor(backgroundColor): void

Background color of the scene. Default is Constants.DEFAULT_SCENE_BACKGROUND_COLOR (WebColors.White)

Parameters

backgroundColor: RgbaColor

Returns

RgbaColor

Source

Scene.ts:89


canvasKit

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

Source

M2Node.ts:1277


completeNodeOptions

get completeNodeOptions(): object

Returns

object

alpha?

optional 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.

anchorPoint?

optional anchorPoint: Point

Point within the node that determines its position. Default is { x: 0.5, y: 0.5 }, which centers the node on its position

backgroundColor

backgroundColor: RgbaColor

draggable?

optional draggable: boolean

Can the node be dragged?

hidden?

optional hidden: boolean

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

isUserInteractionEnabled?

optional isUserInteractionEnabled: boolean

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

layout?

optional layout: Layout

FOR INTERNAL USE ONLY

name?

optional name: string

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

position?

optional position: Point

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

scale?

optional scale: number

Scale of the node. Default is 1.0

suppressEvents?

optional suppressEvents: boolean

Should the node not emit events to the EventStore? Default is false.

Remarks

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

uuid?

Internal

optional uuid: string

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

zPosition?

optional zPosition: number

Value along the z-axis to determine drawing and tap order. Larger values are on top.

zRotation?

optional 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.

Source

Scene.ts:45


descendants

get descendants(): M2Node[]

Returns all descendant nodes.

Remarks

Descendants are children and children of children, recursively.

Returns

M2Node[]

Source

M2Node.ts:524


draggable

get draggable(): boolean

Can the node be dragged?

set draggable(draggable): void

Can the node be dragged?

Parameters

draggable: boolean

Returns

boolean

Source

M2Node.ts:1419


game

get game(): Game

The game which this scene is a part of.

Remarks

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

set game(game): void

Parameters

game: Game

Returns

Game

Source

Scene.ts:82


hidden

get hidden(): boolean

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

set hidden(hidden): void

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

Parameters

hidden: boolean

Returns

boolean

Source

M2Node.ts:1408


isUserInteractionEnabled

get isUserInteractionEnabled(): boolean

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

set isUserInteractionEnabled(isUserInteractionEnabled): void

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

Parameters

isUserInteractionEnabled: boolean

Returns

boolean

Source

M2Node.ts:1394


parentSceneAsNode

get parentSceneAsNode(): M2Node

Returns

M2Node

Source

M2Node.ts:1281


position

get position(): Point

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

set position(position): void

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

Parameters

position: Point

Returns

Point

Source

M2Node.ts:1327


scale

get scale(): number

Scale of the node. Default is 1.0

set scale(scale): void

Scale of the node. Default is 1.0

Parameters

scale: number

Returns

number

Source

M2Node.ts:1372


size

get size(): Size

set size(size): void

Parameters

size: Size

Returns

Size

Source

M2Node.ts:1293


suppressEvents

get suppressEvents(): boolean

Should the node not emit events to the EventStore? Default is false.

Remarks

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

set suppressEvents(value): void

Should the node not emit events to the EventStore? 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

boolean

Source

M2Node.ts:1430


zPosition

get zPosition(): number

Value along the z-axis to determine drawing and tap order. Larger values are on top.

set zPosition(zPosition): void

Value along the z-axis to determine drawing and tap order. Larger values are on top.

Parameters

zPosition: number

Returns

number

Source

Scene.ts:135


zRotation

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.

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

number

Source

M2Node.ts:1361

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

Inherited from

M2Node.addChild

Source

M2Node.ts:346


addEventListener()

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

Type parameters

T extends M2NodeEvent

Parameters

type: string

callback

callbackOptions?: CallbackOptions

Returns

void

Inherited from

M2Node.addEventListener

Source

M2Node.ts:760


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

Inherited from

M2Node.descendant

Remarks

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

Source

M2Node.ts:507


dispose()

Internal

dispose(): void

Frees up resources allocated by the Drawable M2Node.

For m2c2kit library use only

Returns

void

Implementation of

IDrawable.dispose

Remarks

This will be done automatically by the m2c2kit library; the end-user must not call this.

Source

Scene.ts:70


draw()

draw(canvas): void

Parameters

canvas: Canvas

Returns

void

Implementation of

IDrawable.draw

Source

Scene.ts:215


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

Inherited from

M2Node.drawChildren

Source

M2Node.ts:1153


duplicate()

duplicate(newName?): Scene

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

Scene

Overrides

M2Node.duplicate

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.

Source

Scene.ts:156


getDrawableOptions()

protected getDrawableOptions(): DrawableOptions

Returns

DrawableOptions

Inherited from

M2Node.getDrawableOptions

Source

M2Node.ts:1231


getNodeOptions()

protected getNodeOptions(): M2NodeOptions

Returns

M2NodeOptions

Inherited from

M2Node.getNodeOptions

Source

M2Node.ts:1215


getTextOptions()

protected getTextOptions(): TextOptions

Returns

TextOptions

Inherited from

M2Node.getTextOptions

Source

M2Node.ts:1244


initialize()

initialize(): void

Returns

void

Overrides

M2Node.initialize

Source

Scene.ts:54


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

Inherited from

M2Node.involvedInActionAffectingAppearance

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.

Source

M2Node.ts:562


involvedInSceneTransition()

involvedInSceneTransition(): boolean

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

Returns

boolean

true if transitioning

Inherited from

M2Node.involvedInSceneTransition

Source

M2Node.ts:578


onAppear()

onAppear(callback, options?): void

Code that will be called after the scene has finished any transitions and has fully appeared on the screen.

Parameters

callback

function to execute

options?: CallbackOptions

CallbackOptions

Returns

void

Source

Scene.ts:204


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

Inherited from

M2Node.onDrag

Source

M2Node.ts:740


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

Inherited from

M2Node.onDragEnd

Source

M2Node.ts:753


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

Inherited from

M2Node.onDragStart

Source

M2Node.ts:727


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

Inherited from

M2Node.onPointerDown

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.

Source

M2Node.ts:668


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

Inherited from

M2Node.onPointerLeave

Source

M2Node.ts:714


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

Inherited from

M2Node.onPointerMove

Source

M2Node.ts:700


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

Inherited from

M2Node.onPointerUp

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.

Source

M2Node.ts:686


onSetup()

onSetup(callback, options?): void

Code that will be called every time the scene is presented.

Parameters

callback

function to execute

options?: CallbackOptions

CallbackOptions

Returns

void

Remarks

Use this callback to set nodes to their initial state, if that state might be changed later. For example, if a scene allows players to place dots on a grid, the setup() method should ensure the grid is clear of any prior dots from previous times this scene may have been displayed. In addition, if nodes should vary in each iteration, that should be done here.

Source

Scene.ts:189


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

Inherited from

M2Node.onTapDown

Remarks

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

Source

M2Node.ts:597


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

Inherited from

M2Node.onTapLeave

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.

Source

M2Node.ts:652


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

Inherited from

M2Node.onTapUp

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.

Source

M2Node.ts:615


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

Inherited from

M2Node.onTapUpAny

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.

Source

M2Node.ts:634


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

Inherited from

M2Node.removeAction

Source

M2Node.ts:1189


removeAllActions()

removeAllActions(): void

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

Returns

void

Inherited from

M2Node.removeAllActions

Source

M2Node.ts:1197


removeAllChildren()

removeAllChildren(): void

Removes all children from the node.

Returns

void

Inherited from

M2Node.removeAllChildren

Source

M2Node.ts:448


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

Inherited from

M2Node.removeChild

Source

M2Node.ts:458


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

Inherited from

M2Node.removeChildren

Source

M2Node.ts:487


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

Inherited from

M2Node.run

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.

Source

M2Node.ts:1173


saveEvent()

protected saveEvent(event): void

Saves the node's event.

Parameters

event: M2Event<M2Node>

event to save

Returns

void

Inherited from

M2Node.saveEvent

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.

Source

M2Node.ts:261


saveNodeNewEvent()

protected saveNodeNewEvent(): void

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

Returns

void

Inherited from

M2Node.saveNodeNewEvent

Source

M2Node.ts:207


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

Inherited from

M2Node.savePropertyChangeEvent

Source

M2Node.ts:234


toString()

toString(): string

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

Returns

string

Inherited from

M2Node.toString

Remarks

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

Source

M2Node.ts:326


update()

update(): void

Returns

void

Overrides

M2Node.update

Source

Scene.ts:211


warmup()

warmup(canvas): void

Parameters

canvas: Canvas

Returns

void

Implementation of

IDrawable.warmup

Source

Scene.ts:247