节点的管理

类似HTML,整个HTML由各种节点组成,根节点就是HTML标签,然后下面就是各个子节点,然后子节点再套子节点,形成了一个节点树,然后浏览器依据这个节点树进行渲染,然后就把我们需要的页面渲染出来,Laya 其实也是一样,不同的组件和场景组成了一个节点树,交给Laya 引擎渲染。

节点是项目开发的基础,只有充分了解如何操作节点,才能更快的实现复杂的需求。每个节点组件类都是继承自Node类,Node类是可放在显示列表中的所有对象的基类。该显示列表管理 Laya 运行时中显示的所有对象。使用 Node 类排列显示列表中的显示对象。Node 对象可以有子显示对象。

下面来熟悉一下Node类的所有基础的功能

添加

  • 添加子节点addChild(node:Node)

在不考虑层级的情况下,我们可以给某个节点添加子节点,可让子节点跟随父节点显示与否,移动,以及方便管理。添加的子节点会加到所有子节点的最后面。

  • 添加子节点到指定的索引位置addChildAt(index:number)

往往要考虑到节点的层级关系或者说遮挡关系,并且已经了解到需要添加到指定的层级位置可使用此方法

  • 批量添加子节点addChildren(...args:any[])

直接把一组子节点按顺序添加到父节点下,相当于循环调用一次addChild子节点

查找

  • 根据名字,获取子节点对象getChildByName(name: string)

当我们知道某个节点的名字时,可以用个此方法找到父节点下一级的某个子节点

  • 根据子节点的索引位置,获取子节点对象getChildAt(index:number)

当我们知道某个节点的索引位置时,可以用个此方法找到父节点下一级的某个子节点

  • 根据子节点对象,获取子节点的索引位置getChildIndex(node:Node)

当我们想知道某个节点的索引位置时,可以用个此方法可获取子节点

  • 获取子节点对象数量numChildren

通过调用父节点的numChildren属性,可以获得父节点下一级的所有子节点的数量,可用来遍历所有子节点使用,注意不包括子节点下的子节点

  • 获取父节点对象parent

通过调用子节点的parent属性,可以直接获取父节点

  • 当前容器是否包含指定的节点对象contains(node: Node)

判断一个节点下是否包含某个子节点,可以使用此方法,注意此查找过程会遍历所有嵌套的子节点

  • 检查本节点是否是某个节点的上层节点isAncestorOf(node: Node)

改变

  • 设置子节点的索引位置setChildIndex(node:Node,index:number)

如果想改变子节点的显示层级,可以调用此方法,注意index超出父节点的所有节点数会抛出异常

  • 传入新节点替换到已有子节点索引位置replaceChild(newNode: Node, oldNode: Node)

如果想用新的节点替换某个已有节点,可以调用此方法,注意原有的子节点将会被移除,但不会销毁

移除

  • 删除子节点removeChild(node: Node)

删除子节点的时调用此方法,注意子节点将会被移除,但不会销毁

  • 从父容器删除自己removeSelf()

在不需要知道父节点的情况下,调用此方法可直接从父节点删除自己,此方法使用频率比较多

  • 根据名字删除对应子节点removeChildByName(name: string)

当我们知道某个节点的名字时,可以用个此方法从父节点删除子节点

  • 根据索引位置删除对应子节点removeChildAt(index: number)

当我们知道某个节点的索引位置时,可以用个此方法从父节点删除子节点

  • 删除指定索引区间的所有子节点removeChildren(beginIndex: number = 0, endIndex: number = 0x7fffffff)

此方法可以快速删除指定索引区间的所有子节点

Copyright ©Layabox 2022 all right reserved,powered by LayaAir Engine更新时间: 2023-03-03 17:34:15

results matching ""

    No results matching ""