Component
继承自 EventEmitter 对象, Component
类包括的操作有对子组件的查询、过滤、添加、删除等。
属性
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
方法
search( )
根据 类型 搜索组件
function search(type: string, shallow?: boolean): ComponentGroup<M>
参数
type:
组件真实类型- 参考: Type
shallow:
v4.1.0 浅层搜索,默认为 true ,只在当前空间下搜索; 若传入 false ,则会在所有空间下搜索- 注意: 该参数只在 Unity 引擎中生效
返回值
Group<M>:
组件组对象- 参考: ComponentGroup
示例
...省略获取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 引擎中生效
返回值
Group<M>:
组件组对象- 参考: ComponentGroup
示例
...省略获取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:
子组件- 参考: Options
attach:
v4.1.6 是否保持子组件模型的世界变换
返回值
Promise<Component<M>>:
组件实例
示例
...省略获取meta实例的步骤...
const rootComponent = meta.component;
meta.createComponent("/model/model_2.glb").then((component: any) => {
rootComponent.add(component);
});
v4.1.6
replace( )替换组件
function replace: (target: Component<M>) => void
参数
target:
替换后的组件- 参考: Options
返回值
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
参数
evnt:
事件对象- 参考: DTEvent
返回值
- 无
示例
...省略获取meta实例的步骤...
const rootComponent = meta.component;
rootComponent.addEventListener("show", (e: any) => {
console.log(e);
});
rootComponent.emit(new Event("show", "eventTest"));