Options
All
  • Public
  • Public/Protected
  • All
Menu

Class Node

场景树中的基本节点,基本特性有:

  • 具有层级关系
  • 持有各类组件
  • 维护空间变换(坐标、旋转、缩放)信息

Hierarchy

Implements

Index

Constructors

Properties

Accessors

Methods

Constructors

constructor

  • newNode(name?: undefined | string): Node

Properties

Protected __eventTargets

__eventTargets: any[] = []

Register all related EventTargets, all event callbacks will be removed in onPreDestroy protected _eventTargets: EventTarget[] = [];

Protected _active

_active: boolean = true

Protected _activeInHierarchy

_activeInHierarchy: boolean = false

Protected _children

_children: this[] = []

Protected _components

_components: Component[] = []
default

[]

readonly

Protected _dirtyFlags

_dirtyFlags: TransformBit = TransformBit.NONE

Protected _euler

_euler: Vec3 = new Vec3()

Protected _eulerDirty

_eulerDirty: boolean = false

Protected _eventMask

_eventMask: number = 0

Protected _eventProcessor

_eventProcessor: NodeEventProcessor = new NodeEventProcessor(this)

Protected _id

_id: string = idGenerator.getNewId()

Protected _layer

_layer: number = Layers.Enum.DEFAULT

Protected _lpos

_lpos: Vec3 = new Vec3()

Protected _lrot

_lrot: Quat = new Quat()

Protected _lscale

_lscale: Vec3 = new Vec3(1, 1, 1)

Protected _mat

_mat: Mat4 = new Mat4()

Protected _name

_name: string

_objFlags

_objFlags: number

Protected _parent

_parent: this | null = null

Protected _pos

_pos: Vec3 = new Vec3()

Protected _prefab

_prefab: any = null

The PrefabInfo object

type

{PrefabInfo}

Protected _registerIfAttached

_registerIfAttached: undefined | (Anonymous function) = !EDITOR ? undefined : function (this: BaseNode, register) {if (EditorExtends.Node && EditorExtends.Component) {if (register) {EditorExtends.Node.add(this._id, this);for (let i = 0; i < this._components.length; i++) {const comp = this._components[i];EditorExtends.Component.add(comp._id, comp);}}else {for (let i = 0; i < this._components.length; i++) {const comp = this._components[i];EditorExtends.Component.remove(comp._id);}EditorExtends.Node.remove(this._id);}}const children = this._children;for (let i = 0, len = children.length; i < len; ++i) {const child = children[i];child._registerIfAttached!(register);}}

Protected _rot

_rot: Quat = new Quat()

Protected _scale

_scale: Vec3 = new Vec3(1, 1, 1)

Protected _scene

_scene: any = NullScene

此节点属于哪个场景。

type

{cc.Scene}}

Protected _siblingIndex

_siblingIndex: number = 0

_static

_static: boolean = false

_uiProps

_uiProps: NodeUIProperties = new NodeUIProperties(this)

Static EventType

EventType: SystemEventType = SystemEventType

节点可能发出的事件类型

Static NodeSpace

NodeSpace: NodeSpace = NodeSpace

空间变换操作的坐标系

Static TransformBit

TransformBit: TransformBit = TransformBit

节点变换更新的具体部分,可用于判断 TRANSFORM_CHANGED 事件的具体类型

Static TransformDirtyBit

TransformDirtyBit: TransformBit = TransformBit

节点变换更新的具体部分

deprecated

请使用 [Node.TransformBit]

Static Protected _stackId

_stackId: number = 0

Static Protected _stacks

_stacks: Array<Array<null | BaseNode>> = [[]]

Static bookOfChange

bookOfChange: Map<string, number> = bookOfChange

Static Protected idGenerator

idGenerator: IDGenerator = idGenerator

Accessors

Protected persistNode

  • get persistNode(): boolean
  • set persistNode(value: boolean): void

active

  • get active(): boolean
  • set active(isActive: boolean): void

activeInHierarchy

  • get activeInHierarchy(): boolean

anchorX

  • get anchorX(): number
  • set anchorX(value: number): void

anchorY

  • get anchorY(): number
  • set anchorY(value: number): void

children

  • get children(): this[]
  • 节点的所有子节点。

    property

    children

    type

    {Node[]}

    readonly
    example
    var children = node.children;
    for (var i = 0; i < children.length; ++i) {
        cc.log("Node: " + children[i]);
    }

    Returns this[]

components

eulerAngles

  • get eulerAngles(): object
  • set eulerAngles(val: Readonly<Vec3>): void

eventProcessor

forward

  • get forward(): Vec3
  • set forward(dir: Vec3): void

hasChangedFlags

  • get hasChangedFlags(): number
  • set hasChangedFlags(val: number): void

height

  • get height(): number
  • set height(value: number): void

isValid

  • get isValid(): boolean
  • 表示该对象是否可用(被 destroy 后将不可用)。
    当一个对象的 destroy 调用以后,会在这一帧结束后才真正销毁。
    因此从下一帧开始 isValid 就会返回 false,而当前帧内 isValid 仍然会是 true。
    如果希望判断当前帧是否调用过 destroy,请使用 cc.isValid(obj, true),不过这往往是特殊的业务需求引起的,通常情况下不需要这样。

    property

    {Boolean} isValid

    default

    true

    readonly
    example
    import * as cc from 'cc';
    var node = new cc.Node();
    cc.log(node.isValid);    // true
    node.destroy();
    cc.log(node.isValid);    // true, still valid in this frame
    // after a frame...
    cc.log(node.isValid);    // false, destroyed in the end of last frame

    Returns boolean

layer

  • get layer(): number
  • set layer(l: number): void

matrix

  • set matrix(val: Readonly<Mat4>): void

name

  • get name(): string
  • set name(value: string): void

parent

  • get parent(): null | this
  • set parent(value: null | this): void

position

  • get position(): Readonly<Vec3>
  • set position(val: Readonly<Vec3>): void

rotation

  • get rotation(): Readonly<Quat>
  • set rotation(val: Readonly<Quat>): void

scale

  • get scale(): Readonly<Vec3>
  • set scale(val: Readonly<Vec3>): void

scene

  • get scene(): any

uuid

  • get uuid(): string
  • 主要用于编辑器的 uuid,在编辑器下可用于持久化存储,在项目构建之后将变成自增的 id。

    property

    uuid

    type

    {String}

    readonly
    example
    cc.log("Node Uuid: " + node.uuid);

    Returns string

width

  • get width(): number
  • set width(value: number): void

worldMatrix

  • get worldMatrix(): Readonly<Mat4>

worldPosition

  • get worldPosition(): Readonly<Vec3>
  • set worldPosition(val: Readonly<Vec3>): void

worldRotation

  • get worldRotation(): Readonly<Quat>
  • set worldRotation(val: Readonly<Quat>): void

worldScale

  • get worldScale(): Readonly<Vec3>
  • set worldScale(val: Readonly<Vec3>): void

Methods

Protected Optional checkMultipleComp

  • checkMultipleComp(constructor: Function): boolean

destroyImmediate

  • _destroyImmediate(): void

destruct

  • _destruct(): void
  • Clear all references in the instance.

    NOTE: this method will not clear the getter or setter functions which defined in the instance of CCObject. You can override the _destruct method if you need, for example: _destruct: function () { for (var key in this) { if (this.hasOwnProperty(key)) { switch (typeof this[key]) { case 'string': this[key] = ''; break; case 'object': case 'function': this[key] = null; break; } } }

    Returns void

Protected disableChildComps

  • _disableChildComps(): void

Protected instantiate

  • instantiate(cloned: any): any

onBatchCreated

  • _onBatchCreated(): void

onBatchRestored

  • _onBatchRestored(): void

onBeforeSerialize

  • _onBeforeSerialize(): void

Protected onHierarchyChanged

  • onHierarchyChanged(oldParent: this | null): void

Protected onHierarchyChangedBase

  • onHierarchyChangedBase(oldParent: this | null): void

onPostActivated

  • onPostActivated(active: any): void

onPreDestroy

  • _onPreDestroy(): void

Protected onPreDestroyBase

  • _onPreDestroyBase(): boolean

onSetParent

  • onSetParent(oldParent: this | null, keepWorldTransform: boolean): void

Protected Optional onSiblingIndexChanged

  • onSiblingIndexChanged(siblingIndex: number): void

removeComponent

  • removeComponent(component: Component): void

updateSiblingIndex

  • _updateSiblingIndex(): void

addChild

  • addChild(child: this): void

addComponent

  • addComponent<T>(classConstructor: Constructor<T>): T | null
  • addComponent(className: string): Component | null

attr

  • attr(attrs: Object): void
  • 属性配置函数。在 attrs 的所有属性将被设置为节点属性。

    example
    var attrs = { key: 0, num: 100 };
    node.attr(attrs);

    Parameters

    • attrs: Object

      Properties to be set to node

    Returns void

destroy

  • destroy(): boolean

destroyAllChildren

  • destroyAllChildren(): void

dispatchEvent

  • dispatchEvent(event: Event): void

emit

  • emit(type: string, ...args: any[]): void

getAnchorPoint

getChildByName

  • getChildByName(name: string): null | this
  • 通过名称获取节点的子节点。

    example
    var child = node.getChildByName("Test Node");

    Parameters

    • name: string

      A name to find the child node.

    Returns null | this

    a CCNode object whose name equals to the input parameter

getChildByPath

  • getChildByPath(path: string): null | this
  • 通过路径获取节点的子节点。

    example
    var child = node.getChildByPath("Test Node");

    Parameters

    • path: string

      A path to find the child node.

    Returns null | this

    a CCNode object whose name equals to the input parameter

getChildByUuid

  • getChildByUuid(uuid: string): null | this

getComponent

  • getComponent<T>(classConstructor: Constructor<T>): T | null
  • getComponent(className: string): Component | null
  • 获取节点上指定类型的组件,如果节点有附加指定类型的组件,则返回,如果没有则为空。
    传入参数也可以是脚本的名称。

    example
    // get custom test calss.
    var test = node.getComponent("Test");

    Type parameters

    Parameters

    Returns T | null

  • 获取节点上指定类型的组件,如果节点有附加指定类型的组件,则返回,如果没有则为空。
    传入参数也可以是脚本的名称。

    example
    // get custom test calss.
    var test = node.getComponent("Test");

    Parameters

    • className: string

    Returns Component | null

getComponentInChildren

  • getComponentInChildren<T>(classConstructor: Constructor<T>): T | null
  • getComponentInChildren(className: string): Component | null

getComponents

  • getComponents<T>(classConstructor: Constructor<T>): T[]
  • getComponents(className: string): Component[]

getComponentsInChildren

  • getComponentsInChildren<T>(classConstructor: Constructor<T>): T[]
  • getComponentsInChildren(className: string): Component[]

getContentSize

getParent

  • getParent(): null | this

getPosition

getRotation

getScale

getSiblingIndex

  • getSiblingIndex(): number

getWorldMatrix

getWorldPosition

getWorldRS

getWorldRT

getWorldRotation

getWorldScale

hasEventListener

  • hasEventListener(type: string): boolean

insertChild

  • insertChild(child: this, siblingIndex: number): void
  • 插入子节点到指定位置

    example
    node.insertChild(child, 2);

    Parameters

    • child: this

      the child node to be inserted 要插入的子节点

    • siblingIndex: number

      the sibling index to place the child in 用于放置子节点的同级索引

    Returns void

invalidateChildren

inverseTransformPoint

isChildOf

  • isChildOf(parent: this | null): boolean

lookAt

off

  • off(type: string, callback?: Function, target?: Object, useCapture?: any): void

on

once

  • once(type: string, callback: Function, target?: Object, useCapture?: any): void

pauseSystemEvents

  • pauseSystemEvents(recursive: boolean): void

removeAllChildren

  • removeAllChildren(): void

removeChild

  • removeChild(child: this): void

removeComponent

  • removeComponent<T>(classConstructor: Constructor<T>): void
  • removeComponent(classNameOrInstance: string | Component): void
  • 删除节点上的指定组件,传入参数可以是一个组件构造函数或组件名,也可以是已经获得的组件引用。 如果你已经获得组件引用,你也可以直接调用 component.destroy()

    deprecated

    please destroy the component to remove it.

    example
    const sprite = node.getComponent(CC.Sprite);
    if (sprite) {
        node.removeComponent(sprite);
    }
    node.removeComponent('cc.SpriteComponent');

    Type parameters

    Parameters

    Returns void

  • 删除节点上的指定组件,传入参数可以是一个组件构造函数或组件名,也可以是已经获得的组件引用。 如果你已经获得组件引用,你也可以直接调用 component.destroy()

    deprecated

    please destroy the component to remove it.

    example
    const sprite = node.getComponent(CC.Sprite);
    if (sprite) {
        node.removeComponent(sprite);
    }
    node.removeComponent('cc.SpriteComponent');

    Parameters

    Returns void

removeFromParent

  • removeFromParent(): void

resumeSystemEvents

  • resumeSystemEvents(recursive: boolean): void

rotate

setAnchorPoint

  • setAnchorPoint(point: Vec2 | number, y?: undefined | number): void

setContentSize

  • setContentSize(size: Size | number, height?: undefined | number): void

setParent

  • setParent(value: this | null, keepWorldTransform?: boolean): void

setPosition

  • setPosition(position: Vec3): void
  • setPosition(x: number, y: number, z: number): void

setRTS

setRotation

  • setRotation(rotation: Quat): void
  • setRotation(x: number, y: number, z: number, w: number): void
  • 设置本地旋转

    Parameters

    • rotation: Quat

      目标本地旋转

    Returns void

  • 设置本地旋转

    Parameters

    • x: number

      目标本地旋转的 X 分量

    • y: number

      目标本地旋转的 Y 分量

    • z: number

      目标本地旋转的 Z 分量

    • w: number

      目标本地旋转的 W 分量

    Returns void

setRotationFromEuler

  • setRotationFromEuler(x: number, y: number, z: number): void
  • 通过欧拉角设置本地旋转

    Parameters

    • x: number

      目标欧拉角的 X 分量

    • y: number

      目标欧拉角的 Y 分量

    • z: number

      目标欧拉角的 Z 分量

    Returns void

setScale

  • setScale(scale: Vec3): void
  • setScale(x: number, y: number, z: number): void

setSiblingIndex

  • setSiblingIndex(index: number): void

setWorldPosition

  • setWorldPosition(position: Vec3): void
  • setWorldPosition(x: number, y: number, z: number): void

setWorldRotation

  • setWorldRotation(rotation: Quat): void
  • setWorldRotation(x: number, y: number, z: number, w: number): void
  • 设置世界旋转

    Parameters

    • rotation: Quat

      目标世界旋转

    Returns void

  • 设置世界旋转

    Parameters

    • x: number

      目标世界旋转的 X 分量

    • y: number

      目标世界旋转的 Y 分量

    • z: number

      目标世界旋转的 Z 分量

    • w: number

      目标世界旋转的 W 分量

    Returns void

setWorldRotationFromEuler

  • setWorldRotationFromEuler(x: number, y: number, z: number): void
  • 通过欧拉角设置世界旋转

    Parameters

    • x: number

      目标欧拉角的 X 分量

    • y: number

      目标欧拉角的 Y 分量

    • z: number

      目标欧拉角的 Z 分量

    Returns void

setWorldScale

  • setWorldScale(scale: Vec3): void
  • setWorldScale(x: number, y: number, z: number): void

targetOff

  • targetOff(target: string | Object): void

translate

updateWorldTransform

  • updateWorldTransform(): void

walk

  • walk(prefunc: function, postfunc?: undefined | function): void
  • 遍历该节点的子树里的所有节点并按规则执行回调函数。 对子树中的所有节点,包含当前节点,会执行两次回调,prefunc 会在访问它的子节点之前调用,postfunc 会在访问所有子节点之后调用。 这个函数的实现不是基于递归的,而是基于栈展开递归的方式。 请不要在 walk 过程中对任何其他的节点嵌套执行 walk。

    example
    node.walk(function (target) {
        console.log('Walked through node ' + target.name + ' for the first time');
    }, function (target) {
        console.log('Walked through node ' + target.name + ' after walked all children in its sub tree');
    });

    Parameters

    • prefunc: function

      The callback to process node when reach the node for the first time

        • (target: this): void
        • Parameters

          • target: this

          Returns void

    • Optional postfunc: undefined | function

      The callback to process node when re-visit the node after walked all children in its sub tree

    Returns void

Static deferredDestroy

  • _deferredDestroy(): void

Static Protected findChildComponent

  • findChildComponent(children: BaseNode[], constructor: any): any

Static Protected findChildComponents

  • findChildComponents(children: BaseNode[], constructor: any, components: any): void

Static Protected findComponent

Static Protected findComponents

  • findComponents(node: BaseNode, constructor: Function, components: Component[]): void

Static setScene

Static isNode

  • isNode(obj: object | null): boolean

Generated using TypeDoc