Component

继承自 EventEmitter 对象, Component 类包括的操作有对子组件的查询、过滤、添加、删除等。

提示

以下所有的 <M> = <M extends DTModel>

属性

isComponent

是否为组件的标识符

  • 类型: boolean

id

组件id

  • 类型: string

modelId

组件对应的模型id

  • 类型: string

type

组件真实类型

  • 类型: string

  • 说明: 此类型为,在搭建模型时,赋予的物体真实类型,比如 AICamrea、Aircondition、Robot

ext

组件扩展信息

  • 说明: 扩展信息包含

    • tags: string[] 标志符

    • type: string 模型所属大类别,比如 AICamera、Aircondition、Robot 属于 iot 大类

    • typeCode: string | number 模型所属大类别的编码

children

子组件数组

  • 类型: Component

parent

父组件

  • 类型: Component<M> | undefined

model

组件对应的模型

  • 类型: M extends DTModel

方法

根据 类型 搜索组件

function search(type: string, shallow?: boolean): ComponentGroup<M>
  • 参数

    • type: 组件真实类型

    • shallow: v4.1.0 浅层搜索,默认为 true ,只在当前空间下搜索; 若传入 false ,则会在所有空间下搜索

      • 注意: 该参数只在 Unity 引擎中生效
  • 返回值

  • 示例

...省略获取meta实例的步骤...

const rootComponent = meta.component;
const component = rootComponent.search("Type");
console.log(component);

filter( )

自定义筛选子组件

function filter: (callback: (component: Component<M>) => boolean, shallow?: boolean) => ComponentGroup<M>
  • 参数

    • callback: 筛选规则回调函数

    • shallow: v4.1.0 浅层筛选,默认为 true ,只在当前空间下筛选; 若传入 false ,则会在所有空间下筛选

      • 注意: 该参数只在 Unity 引擎中生效
  • 返回值

  • 示例

...省略获取meta实例的步骤...

const rootComponent = meta.component;
const component = rootComponent.filter((child: any) => {
  if (child.type === "Type") return child;
});
console.log(component);

get( )

根据 id 获取组件

function get: (id: string) => Component<M>
  • 参数

    • id: 模型 id 或 业务 id(业务 id: IOT 设备 id ,数字空间 id 等)
  • 返回值

    • component<M>: 组件实例
  • 示例

...省略获取meta实例的步骤...

const rootComponent = meta.component;
const component = rootComponent.get("ModelId");
console.log(component);

add( )

添加子组件

function add: async (child: Component<M> | string | Partial<Options>, attach?: boolean) => Promise<Component<M>>
  • 参数

    • child: 子组件

    • attach: v4.1.6 是否保持子组件模型的世界变换

  • 返回值

    • Promise<Component<M>>: 组件实例
  • 示例

...省略获取meta实例的步骤...

const rootComponent = meta.component;
meta.createComponent("/model/model_2.glb").then((component: any) => {
  rootComponent.add(component);
});

replace( ) v4.1.6

替换组件

function replace: (target: Component<M>) => void
  • 参数

    • target: 替换后的组件

  • 返回值

    • void
  • 示例

...省略获取meta实例的步骤...

const component = meta.get("ModelId")!;
meta.createComponent("/model/model_2.glb").then((target) => {
  target.model.position.set(7, 5, 100);
  component.replace(target)
});

remove( )

删除指定的组件

function remove: (child: Component<M>) => Promise<void>
  • 参数

    • child: 组件实例
  • 返回值

    • Promise<void>
  • 示例

...省略获取meta实例的步骤...

const rootComponent = meta.component;
const component = meta.get("ModelId");
rootComponent.remove(component);

removeFromParent( )

将组件包括三维模型从其父组件中移除,不销毁

function removeFromParent: () => Promise<void>
  • 参数

  • 返回值

    • Promise<void>
  • 示例

...省略获取meta实例的步骤...

const component = meta.get("ModelId");
component.removeFromParent();

dispose( )

销毁组件

function dispose: () => Promise<void>
  • 参数

  • 返回值

    • Promise<void>
  • 示例

...省略获取meta实例的步骤...

const component = meta.get("ModelId");
component.dispose();

clear( )

清空子组件

function clear: () => void
  • 参数

  • 返回值

    • void
  • 示例

...省略获取meta实例的步骤...

const rootComponent = meta.component;
rootComponent.clear();

emit( )

手动触发事件

function emit: (event: DTEvent) => void
  • 参数

  • 返回值

  • 示例

...省略获取meta实例的步骤...

const rootComponent = meta.component;
rootComponent.addEventListener("show", (e: any) => {
  console.log(e);
});
rootComponent.emit(new Event("show", "eventTest"));
上次更新:
贡献者: zhengqian, yangxun, 黄睿, huangcx708, yanhao