# Class: Scene
场景,系统核心之一。
Scene是元素的一种,对应于xr-scene标签。
作为整个xr-frame组件的根节点,它提供了整个组件运作的一些基本能力,挂在了各大系统,驱动生命周期循环。
# Hierarchy
-
↳
Scene
# Table of contents
# Constructors
# Properties
# Accessors
- animation
- ar
- assets
- event
- frameHeight
- frameWidth
- gizmo
- height
- id
- inXML
- name
- parent
- physics
- ready
- render
- rootShadow
- scene
- share
- timestamp
- video
- width
# Methods
- addChild
- addComponent
- createEffect
- createElement
- createGeometry
- createImage
- createMaterial
- createPostProcess
- createRenderTexture
- createTexture
- createUniformBlock
- createUniformBlockDesc
- createVertexLayout
- createVideoTexture
- dfs
- getChildAtIndex
- getChildByClass
- getChildByFilter
- getChildByName
- getChildrenByFilter
- getChildrenByName
- getComponent
- getElementById
- getNodeById
- release
- removeChild
- removeComponent
- setAttribute
- setId
# Constructors
# constructor
• new Scene(_type, triggerEvent)
# Parameters
| Name | Type |
|---|---|
_type | string |
triggerEvent | TFrameworkEventTrigger |
# Inherited from
# Properties
# dataMapping
• Readonly dataMapping: Object
Element的数据映射。它是为了给组件的属性提供一个方便的用法,比如:
{
position: [transform, position]
}
就是将xml中写在这个Element的position直接映射到了transform组件的position属性上。
通常来讲,所有的驼峰如nodeId都会被映射为小写加中划线node-id。
# Index signature
▪ [key: string]: string[]
# Inherited from
# defaultComponents
• Readonly defaultComponents: IEntityComponents
Element的默认组件集合,详见IEntityComponents。
# Overrides
# isScene
• Readonly isScene: boolean = true
# TYPE
▪ Static TYPE: string = 'element'
# Inherited from
# Accessors
# animation
• get animation(): AnimationSystem
动画系统。
# Returns
# ar
• get ar(): ARSystem
AR系统。
# Returns
# assets
• get assets(): AssetsSystem
资源系统。
# Returns
# event
• get event(): EventManager
事件管理器。
# Returns
# frameHeight
• get frameHeight(): number
显示分辨率高。
# Returns
number
# frameWidth
• get frameWidth(): number
显示分辨率宽。
# Returns
number
# gizmo
• get gizmo(): GizmoSystem
Gizmo系统。
# Returns
# height
• get height(): number
渲染分辨率高,一般物理点击事件之类的都是参考这个。
# Returns
number
# id
• get id(): string
写在xml上的那个id,要求唯一。
# Returns
string
# inXML
• get inXML(): boolean
元素是否在xml中,若是xr-shadow下的节点,则为false。
# Returns
boolean
# name
• get name(): string
名字,写在xml上的那个name,不唯一。
# Returns
string
• set name(value): void
名字,写在xml上的那个name,不唯一。
# Parameters
| Name | Type |
|---|---|
value | string |
# Returns
void
# parent
• get parent(): Element
父元素。
# Returns
# physics
• get physics(): PhysicsSystem
物理系统。
# Returns
# ready
• get ready(): boolean
场景是否已经就绪。
# Returns
boolean
# render
• get render(): RenderSystem
渲染系统。
# Returns
# rootShadow
• get rootShadow(): XRShadow
一个可以用于快速挂载自己创建的Element的shadow节点。
# Returns
# scene
• get scene(): this
自身。
# Returns
this
# share
• get share(): ShareSystem
分享系统。
# Returns
# timestamp
• get timestamp(): number
当前时间戳(ms)。
# Returns
number
# video
• get video(): VideoSystem
视频系统。
# Returns
# width
• get width(): number
渲染分辨率宽,一般物理点击事件之类的都是参考这个。
# Returns
number
# Methods
# addChild
▸ addChild(child): void
手动添加一个子节点,注意需要保证当前节点是xr-shadow或其子节点。
# Parameters
| Name | Type |
|---|---|
child | Element |
# Returns
void
# Inherited from
# addComponent
▸ addComponent<T>(clz, options?): T
手动添加一个Component。
# Type parameters
| Name | Type |
|---|---|
T | extends Component<any, T> |
# Parameters
| Name | Type |
|---|---|
clz | () => T |
options? | T["__DATA_TYPE"] |
# Returns
T
# Inherited from
# createEffect
▸ createEffect(description): Effect
手动创建一个Effect资源。
# Parameters
| Name | Type |
|---|---|
description | IEffectAsset |
# Returns
# createElement
▸ createElement<T>(clz, attributes?): T
创建一个Element,但注意其只能作为xr-shadow的子孙节点,否则可能会出错!
# Type parameters
| Name | Type |
|---|---|
T | extends Element<T> |
# Parameters
| Name | Type | Description |
|---|---|---|
clz | (...args: any) => T | - |
attributes? | Object | 初始化的属性,同于xml中对应的标签属性。 |
# Returns
T
# createGeometry
▸ createGeometry(vertexLayout, vBuffer, iBuffer, indexType?): Geometry
手动创建一个Geometry资源。
# Parameters
| Name | Type |
|---|---|
vertexLayout | default |
vBuffer | ArrayBufferView |
iBuffer | ArrayBufferView |
indexType? | EIndexType |
# Returns
# createImage
▸ createImage(autoRelease?): IImage
手动创建一个Image资源。
# Parameters
| Name | Type | Default value | Description |
|---|---|---|---|
autoRelease | boolean | true | 此图片在第一次时候后是否释放原始数据,默认释放。 |
# Returns
# createMaterial
▸ createMaterial(effect, defaultUniforms?): Material
手动创建一个Material资源。
# Parameters
| Name | Type |
|---|---|
effect | Effect |
defaultUniforms? | Object |
# Returns
# createPostProcess
▸ createPostProcess(options): PostProcess
手动创建一个PostProcess资源。
# Parameters
| Name | Type |
|---|---|
options | IPostProcessOptions |
# Returns
# createRenderTexture
▸ createRenderTexture(options?): RenderTexture
手动创建一个RenderTexture资源。
# Parameters
| Name | Type |
|---|---|
options? | IRenderTextureOptions |
# Returns
# createTexture
▸ createTexture(options): default
手动创建一个Texture资源。
# Parameters
| Name | Type |
|---|---|
options | ITextureOptions |
# Returns
default
# createUniformBlock
▸ createUniformBlock(descriptor): default
手动创建一个UniformBlock资源。
# Parameters
| Name | Type |
|---|---|
descriptor | default |
# Returns
default
# createUniformBlockDesc
▸ createUniformBlockDesc(options): default
手动创建一个UniformBlockDescriptor资源。
# Parameters
| Name | Type |
|---|---|
options | IUniformDescriptorOptions |
# Returns
default
# createVertexLayout
▸ createVertexLayout(options): default
手动创建一个VertexLayout资源。
# Parameters
| Name | Type |
|---|---|
options | IVertexLayoutOptions |
# Returns
default
# createVideoTexture
▸ createVideoTexture(options?): Promise<VideoTexture>
手动创建一个VideoTexture资源。
# Parameters
| Name | Type |
|---|---|
options? | IVideoTextureOptions |
# Returns
Promise<VideoTexture>
# dfs
▸ dfs<T>(callback, defaultParams?, excludeRoot?, stop?): void
递归遍历元素的所有子孙节点。
# Type parameters
| Name | Type |
|---|---|
T | extends unknown |
# Parameters
| Name | Type |
|---|---|
callback | (element: Element, params?: T) => T |
defaultParams? | T |
excludeRoot? | boolean |
stop | (element: Element, params?: T) => boolean |
# Returns
void
# Inherited from
# getChildAtIndex
▸ getChildAtIndex<T>(index): T
获取第index个子元素。
# Type parameters
# Parameters
| Name | Type |
|---|---|
index | number |
# Returns
T
# Inherited from
# getChildByClass
▸ getChildByClass<T>(clz): T
通过元素的类获取子元素。
# Type parameters
# Parameters
| Name | Type |
|---|---|
clz | (...args: any[]) => T |
# Returns
T
# Inherited from
# getChildByFilter
▸ getChildByFilter<T>(filter): T
通过filter获取子元素。
# Type parameters
# Parameters
| Name | Type |
|---|---|
filter | (child: Element) => boolean |
# Returns
T
# Inherited from
# getChildByName
▸ getChildByName<T>(name): T
通过元素的名字name获取子元素。
# Type parameters
# Parameters
| Name | Type |
|---|---|
name | string |
# Returns
T
# Inherited from
# getChildrenByFilter
▸ getChildrenByFilter(filter): Element[]
通过filter获取子元素列表。
# Parameters
| Name | Type |
|---|---|
filter | (child: Element) => boolean |
# Returns
Element[]
# Inherited from
# getChildrenByName
▸ getChildrenByName(name): Element[]
通过元素的名字name获取子元素们。
# Parameters
| Name | Type |
|---|---|
name | string |
# Returns
Element[]
# Inherited from
# getComponent
▸ getComponent<T>(clzName): T
获取一个Component,可以使用类或者名字获取。
# Type parameters
| Name | Type |
|---|---|
T | extends Component<any, T> |
# Parameters
| Name | Type |
|---|---|
clzName | string |
# Returns
T
# Inherited from
▸ getComponent<T>(clz): T
# Type parameters
| Name | Type |
|---|---|
T | extends Component<any, T> |
# Parameters
| Name | Type |
|---|---|
clz | () => T |
# Returns
T
# Inherited from
# getElementById
▸ getElementById(id): Element
通过在wxml的元素上设置的id索引一个元素,id是唯一的。
# Parameters
| Name | Type |
|---|---|
id | string |
# Returns
# getNodeById
▸ getNodeById(nodeId): Transform
通过在wxml的元素上设置的node-id索引一个Transform组件,node-id是唯一的。
# Parameters
| Name | Type |
|---|---|
nodeId | string |
# Returns
# release
▸ release(): void
仅限自己创建的节点使用,否则后果自负。
# Returns
void
# Inherited from
# removeChild
▸ removeChild(child): void
手动移除一个子节点,注意需要保证当前节点是xr-shadow或其子节点。
只调用removeChild没有办法走进子节点的onRelease里,需要手动调用子节点的release才行。
# Parameters
| Name | Type |
|---|---|
child | Element |
# Returns
void
# Inherited from
# removeComponent
▸ removeComponent(clz): void
手动移除一个Component,注意保证其不在xml上。
# Parameters
| Name | Type |
|---|---|
clz | () => Component<any> |
# Returns
void
# Inherited from
# setAttribute
▸ setAttribute(name, value): void
设置一个属性,对应于xml标签中的那些属性,值为字符串。
一般建议使用component的setData方法!!!
# Parameters
| Name | Type |
|---|---|
name | string |
value | string |
# Returns
void
# Inherited from
# setId
▸ setId(id): void
仅限自己创建的节点使用,否则后果自负。
# Parameters
| Name | Type |
|---|---|
id | string |
# Returns
void