# Class: Shape<T>
轮廓组件的基类。 为元素添加该组件的子类可以创建一个可用于交互的轮廓。
💡 只要创建了轮廓,在点击该物体时就可以触发事件:
- touch-shape: 点击物体事件,回调参数为IShapeTouchEvent;
- drag-shape: 拖拽物体事件,回调参数为IShapeDragEvent;
- untouch-shape: 松开物体事件,回调参数为IShapeTouchEvent;
绑定事件的方法可参考以下代码:
<xr-node sphere-shape bind:touch-shape="handleTouchShape"></xr-node>
💡 如果想要将轮廓可视化来确认轮廓大小,可以在同一个元素下添加ShapeGizmos组件,或在标签上添加
shape-gizmo
属性(对MeshShape不起作用)。
abstract
# Type parameters
Name | Type |
---|---|
T | extends IShapeData = any |
# Hierarchy
-
↳
Shape
↳↳
SphereShape
↳↳
MeshShape
↳↳
CapsuleShape
↳↳
CubeShape
# Table of contents
# Constructors
# Events
# Properties
# Accessors
# Methods
- getBasicImpl
- getData
- getGLTFRootShape
- getShadowShapes
- initDelegates
- resetListeners
- setAsShadow
- setData
- setDataOne
# Constructors
# constructor
• new Shape<T
>()
# Type parameters
Name | Type |
---|---|
T | extends IShapeData = any |
# Inherited from
# Events
# onAdd
▸ onAdd(parent
, data
): void
所挂载的element
被挂载到场景时触发的回调。
# Parameters
Name | Type |
---|---|
parent | Element |
data | T |
# Returns
void
# Inherited from
# onRelease
▸ onRelease(data
): void
从被挂载的element
上被移除,或是element
被销毁时,触发的回调。
一般用于释放持有的资源。
# Parameters
Name | Type |
---|---|
data | IShapeData |
# Returns
void
# Inherited from
# onRemove
▸ onRemove(parent
, data
): void
所挂载的element
从父节点parent
被移除时,或者自己从element
上被移除时,触发的回调。
一般用于消除功能的运作。
如果一个组件的元素直接被销毁了,那这个组件就不会经历onRemove而是直接进入onRelease。
# Parameters
Name | Type |
---|---|
parent | Element |
data | IShapeData |
# Returns
void
# Inherited from
# onTick
▸ onTick(dateTime
, data
): void
渲染每帧触发的回调。
# Parameters
Name | Type |
---|---|
dateTime | number |
data | T |
# Returns
void
# Inherited from
# onUpdate
▸ onUpdate(data
, preData
): void
数据更新时触发的回调。
# Parameters
Name | Type |
---|---|
data | T |
preData | T |
# Returns
void
# Inherited from
# Properties
# implType
• implType: ShapeImplType
# priority
• Readonly
priority: number
= 400
自定义组件的更新优先级。
# Overrides
# schema
• Readonly
schema: IComponentSchema
= {}
自定义组件的schema
。
# Inherited from
# shadowRoot
• Optional
shadowRoot: GLTFAbstractShape
<T
>
# EVENTS
▪ Static
EVENTS: string
[]
# Overrides
# Accessors
# el
• get
el(): Element
挂载的元素。
# Returns
# scene
• get
scene(): Scene
当前场景。
# Returns
# type
• get
type(): EShapeType
# Returns
# version
• get
version(): number
当前版本,每次有数据更新都会增加,可以用作和其他组件合作的依据。
# Returns
number
# Methods
# getBasicImpl
▸ getBasicImpl(): BasicShape
<T
>
# Returns
BasicShape
<T
>
# getData
▸ getData<T
>(key
): IShapeData
[T
]
获取一个当前值。
# Type parameters
Name | Type |
---|---|
T | extends keyof IShapeData |
# Parameters
Name | Type |
---|---|
key | T |
# Returns
IShapeData
[T
]
# Inherited from
# getGLTFRootShape
▸ getGLTFRootShape(): Shape
<T
>
# Returns
Shape
<T
>
# getShadowShapes
▸ getShadowShapes(): Shape
<T
>[]
# Returns
Shape
<T
>[]
# initDelegates
▸ initDelegates(el
): void
# Parameters
Name | Type |
---|---|
el | Element |
# Returns
void
# resetListeners
▸ resetListeners(): void
# Returns
void
# setAsShadow
▸ setAsShadow(root
, transform
): void
# Parameters
Name | Type |
---|---|
root | GLTFAbstractShape <T > |
transform | TQS |
# Returns
void
# setData
▸ setData(data
): void
不通过xml
而是直接设置data
,注意值的类型需要和schema
中一致。
# Parameters
Name | Type |
---|---|
data | Partial <IShapeData > |
# Returns
void
# Inherited from
# setDataOne
▸ setDataOne<T
>(key
, value
): void
设置一个数据。
# Type parameters
Name | Type |
---|---|
T | extends keyof IShapeData |
# Parameters
Name | Type |
---|---|
key | T |
value | IShapeData [T ] |
# Returns
void