# Class: XRARTracker

标签为`xr-ar-tracker`。

默认组件见[ARTrackerDefaultComponents](../modules#ARTrackerDefaultComponents)，属性映射见[ARTrackerDataMapping](../modules#ARTrackerDataMapping)。

## Hierarchy

- [`Element`](Element)

  ↳ **`XRARTracker`**

## Table of contents

### Constructors

- constructor

### Properties

- dataMapping
- defaultComponents
- TYPE

### Accessors

- event
- id
- inXML
- name
- parent
- scene

### Methods

- addChild
- addComponent
- dfs
- getChildAtIndex
- getChildByClass
- getChildByFilter
- getChildByName
- getChildrenByFilter
- getChildrenByName
- getComponent
- release
- removeChild
- removeComponent
- setAttribute
- setId

## Constructors

### constructor

• **new XRARTracker**(`_type`, `triggerEvent`)

#### Parameters

| Name | Type |
| :------ | :------ |
| `_type` | `string` |
| `triggerEvent` | `TFrameworkEventTrigger` |

#### Inherited from

[Element](Element).[constructor](Element#constructor)

## Properties

### dataMapping

• `Readonly` **dataMapping**: `Object`

`Element`的数据映射。它是为了给组件的属性提供一个方便的用法，比如：
```ts
{
  position: [transform, position]
}
```
就是将`xml`中写在这个`Element`的`position`直接映射到了`transform`组件的`position`属性上。

**通常来讲，所有的驼峰如`nodeId`都会被映射为小写加中划线`node-id`**。

#### Index signature

▪ [key: `string`]: `string`[]

#### Overrides

[Element](Element).[dataMapping](Element#dataMapping)

___

### defaultComponents

• `Readonly` **defaultComponents**: [`IEntityComponents`](/miniprogram/dev/reference/xr-frame/api/interfaces/IEntityComponents)

`Element`的默认组件集合，详见[IEntityComponents](/miniprogram/dev/reference/xr-frame/api/interfaces/IEntityComponents)。

#### Overrides

[Element](Element).[defaultComponents](Element#defaultComponents)

___

### TYPE

▪ `Static` **TYPE**: `string` = `'element'`

#### Inherited from

[Element](Element).[TYPE](Element#TYPE)

## Accessors

### event

• `get` **event**(): [`EventManager`](EventManager)

事件管理器。

#### Returns

[`EventManager`](EventManager)

___

### 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`](Element)

父元素。

#### Returns

[`Element`](Element)

___

### scene

• `get` **scene**(): [`Scene`](Scene)

场景实例。

#### Returns

[`Scene`](Scene)

## Methods

### addChild

▸ **addChild**(`child`): `void`

手动添加一个子节点，**注意需要保证当前节点是`xr-shadow`或其子节点**。

#### Parameters

| Name | Type |
| :------ | :------ |
| `child` | [`Element`](Element) |

#### Returns

`void`

#### Inherited from

[Element](Element).[addChild](Element#addChild)

___

### addComponent

▸ **addComponent**(`clz`, `options?`): `T`

手动添加一个`Component`。

#### Type parameters

| Name | Type |
| :------ | :------ |
| `T` | extends [`Component`](Component) |

#### Parameters

| Name | Type |
| :------ | :------ |
| `clz` | () => `T` |
| `options?` | `T`[``"__DATA_TYPE"``] |

#### Returns

`T`

#### Inherited from

[Element](Element).[addComponent](Element#addComponent)

___

### dfs

▸ **dfs**(`callback`, `defaultParams?`, `excludeRoot?`, `stop?`): `void`

递归遍历元素的所有子孙节点。

#### Type parameters

| Name | Type |
| :------ | :------ |
| `T` | extends `unknown` |

#### Parameters

| Name | Type |
| :------ | :------ |
| `callback` | (`element`: [`Element`](Element), `params?`: `T`) => `T` |
| `defaultParams?` | `T` |
| `excludeRoot?` | `boolean` |
| `stop` | (`element`: [`Element`](Element), `params?`: `T`) => `boolean` |

#### Returns

`void`

#### Inherited from

[Element](Element).[dfs](Element#dfs)

___

### getChildAtIndex

▸ **getChildAtIndex**(`index`): `T`

获取第`index`个子元素。

#### Type parameters

| Name | Type |
| :------ | :------ |
| `T` | extends [`Element`](Element) = [`Element`](Element) |

#### Parameters

| Name | Type |
| :------ | :------ |
| `index` | `number` |

#### Returns

`T`

#### Inherited from

[Element](Element).[getChildAtIndex](Element#getChildAtIndex)

___

### getChildByClass

▸ **getChildByClass**(`clz`): `T`

通过元素的类获取子元素。

#### Type parameters

| Name | Type |
| :------ | :------ |
| `T` | extends [`Element`](Element) = [`Element`](Element) |

#### Parameters

| Name | Type |
| :------ | :------ |
| `clz` | (...`args`: `any`[]) => `T` |

#### Returns

`T`

#### Inherited from

[Element](Element).[getChildByClass](Element#getChildByClass)

___

### getChildByFilter

▸ **getChildByFilter**(`filter`): `T`

通过`filter`获取子元素。

#### Type parameters

| Name | Type |
| :------ | :------ |
| `T` | extends [`Element`](Element) = [`Element`](Element) |

#### Parameters

| Name | Type |
| :------ | :------ |
| `filter` | (`child`: [`Element`](Element)) => `boolean` |

#### Returns

`T`

#### Inherited from

[Element](Element).[getChildByFilter](Element#getChildByFilter)

___

### getChildByName

▸ **getChildByName**(`name`): `T`

通过元素的名字`name`获取子元素。

#### Type parameters

| Name | Type |
| :------ | :------ |
| `T` | extends [`Element`](Element) = [`Element`](Element) |

#### Parameters

| Name | Type |
| :------ | :------ |
| `name` | `string` |

#### Returns

`T`

#### Inherited from

[Element](Element).[getChildByName](Element#getChildByName)

___

### getChildrenByFilter

▸ **getChildrenByFilter**(`filter`): [`Element`](Element)[]

通过`filter`获取子元素列表。

#### Parameters

| Name | Type |
| :------ | :------ |
| `filter` | (`child`: [`Element`](Element)) => `boolean` |

#### Returns

[`Element`](Element)[]

#### Inherited from

[Element](Element).[getChildrenByFilter](Element#getChildrenByFilter)

___

### getChildrenByName

▸ **getChildrenByName**(`name`): [`Element`](Element)[]

通过元素的名字`name`获取子元素们。

#### Parameters

| Name | Type |
| :------ | :------ |
| `name` | `string` |

#### Returns

[`Element`](Element)[]

#### Inherited from

[Element](Element).[getChildrenByName](Element#getChildrenByName)

___

### getComponent

▸ **getComponent**(`clzName`): `T`

获取一个`Component`，可以使用类或者名字获取。

#### Type parameters

| Name | Type |
| :------ | :------ |
| `T` | extends [`Component`](Component) |

#### Parameters

| Name | Type |
| :------ | :------ |
| `clzName` | `string` |

#### Returns

`T`

#### Inherited from

[Element](Element).[getComponent](Element#getComponent)

▸ **getComponent**(`clz`): `T`

#### Type parameters

| Name | Type |
| :------ | :------ |
| `T` | extends [`Component`](Component) |

#### Parameters

| Name | Type |
| :------ | :------ |
| `clz` | () => `T` |

#### Returns

`T`

#### Inherited from

[Element](Element).[getComponent](Element#getComponent)

___

### release

▸ **release**(): `void`

仅限自己创建的节点使用，否则后果自负。

#### Returns

`void`

#### Inherited from

[Element](Element).[release](Element#release)

___

### removeChild

▸ **removeChild**(`child`): `void`

手动移除一个子节点，**注意需要保证当前节点是`xr-shadow`或其子节点**。
**只调用removeChild没有办法走进子节点的onRelease里**，需要手动调用子节点的release才行。

#### Parameters

| Name | Type |
| :------ | :------ |
| `child` | [`Element`](Element) |

#### Returns

`void`

#### Inherited from

[Element](Element).[removeChild](Element#removeChild)

___

### removeComponent

▸ **removeComponent**(`clz`): `void`

手动移除一个`Component`，注意保证其不在`xml`上。

#### Parameters

| Name | Type |
| :------ | :------ |
| `clz` | () => [`Component`](Component) |

#### Returns

`void`

#### Inherited from

[Element](Element).[removeComponent](Element#removeComponent)

___

### setAttribute

▸ **setAttribute**(`name`, `value`): `void`

设置一个属性，对应于`xml`标签中的那些属性，值为字符串。
**一般建议使用`component`的`setData`方法**！！！

#### Parameters

| Name | Type |
| :------ | :------ |
| `name` | `string` |
| `value` | `string` |

#### Returns

`void`

#### Inherited from

[Element](Element).[setAttribute](Element#setAttribute)

___

### setId

▸ **setId**(`id`): `void`

仅限自己创建的节点使用，否则后果自负。

#### Parameters

| Name | Type |
| :------ | :------ |
| `id` | `string` |

#### Returns

`void`

#### Inherited from

[Element](Element).[setId](Element#setId)
