# ESCameraViewCollection（视角集合）

> 分类：**辅助/UI对象** | 引擎：Cesium/UE | 基类：否
> 继承链：`Destroyable -> ESSceneObject -> ESCameraViewCollection`

ESCameraViewCollection 是用于管理一组相机视角并支持视角切换、飞行与轮播播放的对象。

## JSON 示例

```json
{
            "id": "cameraviewcollection_xxx",
            "type": "ESCameraViewCollection",
            "name": "视角集合",
            "flyMode": "default",
            "intervalTime": 5,
            "views":[{ "position":[116.39,39.9,1000],"rotation":[0,-90,0]}]
        }
```

## 属性

| 属性 | 类型 | 默认值 | 说明 | 来源 |
| --- | --- | --- | --- | --- |
| `devTags` | string[] \| undefined | undefined | 对象类型名称相关的开发标签数组，使用 reactArrayWithUndefined 进行响应式处理，默认为 undefined。 | ESSceneObject |
| `execOnceFuncStr` | string \| undefined | undefined | 一次性执行函数的字符串表示，默认为 undefined。 | ESSceneObject |
| `extras` | JsonValue | undefined | 扩展属性 JSON，必须整体赋值，使用 reactJson 进行响应式处理，默认为 undefined。 | ESSceneObject |
| `flyMode` | 'default' \| 'uniform' | "default' as 'default' \| 'uniform" | 飞行模式 默认为相机飞行，uniform为两点直线飞行 | ESCameraViewCollection |
| `intervalTime` | number | 5 | 间隔时间 | ESCameraViewCollection |
| `loop` | boolean | true | 是否循环 | ESCameraViewCollection |
| `name` | string | "未命名场景对象" | 对象名称，默认为 '未命名场景对象'。 | ESSceneObject |
| `playing` | boolean | false | 开始播放 | ESCameraViewCollection |
| `ref` | string \| undefined | undefined | 对象引用，设置后可通过对象管理器 objm.$refs.xxx 快速获取到对象，默认为 undefined。 | ESSceneObject |
| `toDestroyFuncStr` | string \| undefined | undefined | 销毁函数的字符串表示，默认为 undefined。 | ESSceneObject |
| `updateFuncStr` | string \| undefined | undefined | 更新函数的字符串表示，默认为 undefined。 | ESSceneObject |

## 方法

| 方法 | 参数 | 返回 | 说明 | 来源 |
| --- | --- | --- | --- | --- |
| `add(name: string = `视角${this.views.length + 1}`, size: [number, number] = [64, 64])` | name: string = `视角${this.views.length + 1}`, size: [number, number] = [64, 64] | - | 添加视角。<br>**参数**：name - 视角名称，默认为 `视角${views.length+ 1}`。；size - 截图尺寸，默认为[64, 64]。 | ESCameraViewCollection |
| `addToViewer(viewer: ESViewer)` | viewer: ESViewer | - | 将对象添加到指定视口中。<br>**参数**：viewer - 要添加对象的视口。 | ESSceneObject |
| `addView()` | - | - | 添加视角。 | ESCameraViewCollection |
| `clearAllViews()` | - | - | 删除所有视角。 | ESCameraViewCollection |
| `createAttachedObject(createViewerPropSceneObject: (viewer: ESViewer) => Destroyable | undefined)` | createViewerPropSceneObject: (viewer: ESViewer) => Destroyable \| undefined | - | 创建与视口关联的对象，并返回一个销毁函数，用于手动销毁关联对象。<br>**参数**：createViewerPropSceneObject - 一个函数，用于创建与视口关联的对象。<br>**返回**：一个销毁函数，调用该函数可以销毁所有关联对象。 | ESSceneObject |
| `deleteCurrentView()` | - | - | 删除当前视角。 | ESCameraViewCollection |
| `deleteView(index: number)` | index: number | - | 删除指定视角。<br>**参数**：index - 要删除视角的索引。 | ESCameraViewCollection |
| `emitViewsWarpper()` | - | - | 触发视图包装器变化的事件。 | ESCameraViewCollection |
| `flush()` | - | - | 刷新对象，触发刷新事件。 | ESSceneObject |
| `flyToNextView()` | - | - | 飞入下一个视角。<br>**返回**：飞入是否成功。 | ESCameraViewCollection |
| `flyToPrevView()` | - | - | 飞入上一个视角。<br>**返回**：飞入是否成功。 | ESCameraViewCollection |
| `flyToView(index: number)` | index: number | - | 飞入指定视角。<br>**参数**：index - 要飞入的视角索引。 | ESCameraViewCollection |
| `getESProperties()` | - | - | 获取对象的属性列表。<br>**返回**：属性列表。 | ESCameraViewCollection |
| `initProcessing()` | - | - | - | ESCameraViewCollection |
| `insertView(index: number)` | index: number | - | 插入视角。<br>**参数**：index - 当前视角的索引。 | ESCameraViewCollection |
| `moveToNextView()` | - | - | 将当前视角移动到下一个位置。 | ESCameraViewCollection |
| `moveToPreView()` | - | - | 将当前视角移动到上一个位置。 | ESCameraViewCollection |
| `registerAttachedObject(createViewerPropSceneObject: (viewer: ESViewer) => Destroyable | undefined)` | createViewerPropSceneObject: (viewer: ESViewer) => Destroyable \| undefined | - | 注册与视口关联的对象，当对象被添加到视口或从视口移除时，会自动创建或销毁关联对象。<br>**参数**：createViewerPropSceneObject - 一个函数，用于创建与视口关联的对象。 | ESSceneObject |
| `registerAttachedObjectForContainer(createContainerPropSceneObject: (viewer: ESViewer, container: HTMLDivElement) => Destroyable | undefined)` | createContainerPropSceneObject: (viewer: ESViewer, container: HTMLDivElement) => Destroyable \| undefined | - | 注册与视口容器关联的对象，当对象被添加到视口或从视口移除时，会自动创建或销毁关联对象。<br>**参数**：createContainerPropSceneObject - 一个函数，用于创建与视口容器关联的对象。 | ESSceneObject |
| `reload()` | - | - | - | ESSceneObject |
| `removefromViewer(viewer: ESViewer)` | viewer: ESViewer | - | 将对象从指定视口中移除。<br>**参数**：viewer - 要移除对象的视口。 | ESSceneObject |
| `resetView(index: number)` | index: number | - | 重置指定位置的视角。<br>**参数**：index - 当前视角的索引。 | ESCameraViewCollection |
| `resetViewName(index: number, value: string)` | index: number, value: string | - | 重置指定位置视角的名称。<br>**参数**：index - 当前视角的索引。；value - 要设置的视角名称。 | ESCameraViewCollection |
| `setCurrentView(index: number)` | index: number | - | 设置当前视角。<br>**参数**：index - 当前视角的索引。<br>**返回**：设置是否成功。 | ESCameraViewCollection |
| `stop()` | - | - | 停止播放。 | ESCameraViewCollection |
| `transitionImageUrl(url: string)` | url: string | - | 转换图片路径。<br>**参数**：url - 图片路径。<br>**返回**：转换后的图片路径。 | ESCameraViewCollection |
| `update(index: number, name?: string, size: [number, number] = [64, 64])` | index: number, name?: string, size: [number, number] = [64, 64] | - | 更新指定位置的视角。<br>**参数**：index - 更新指定位置的视角索引。；name - 视角名称，可选。；size - 截图尺寸，默认为[64, 64]。<br>**返回**：更新是否成功。 | ESCameraViewCollection |
| `updateView(index: number, val: ESJViewInfo)` | index: number, val: ESJViewInfo | - | 修改指定位置的视角信息。<br>**参数**：index - 当前视角的索引。；val - 要设置的视角信息。<br>**返回**：修改是否成功。 | ESCameraViewCollection |

## 事件

| 事件 | 说明 | 来源 |
| --- | --- | --- |
| `activeViewerChanged` | - | ESSceneObject |
| `containerChanged` | 获取容器元素变化的可观察对象。 | ESCameraViewCollection |
| `createdEvent` | 获取对象创建事件。 | ESSceneObject |
| `currentViewIndexChanged` | 获取当前视角索引变化的可观察对象。 | ESCameraViewCollection |
| `flushEvent` | 获取刷新对象事件。 | ESSceneObject |
| `readyEvent` | - | ESSceneObject |
| `reloadEvent` | - | ESSceneObject |
| `toDestroyFuncChanged` | 获取销毁函数改变事件。 | ESSceneObject |
| `updateFuncChanged` | 获取更新函数改变事件。 | ESSceneObject |
| `viewsChanged` | 获取视图信息变化的事件。 | ESCameraViewCollection |

---
> 本文由 `generate-docs.mjs` 从源码自动生成，请勿手改。修改对象属性/方法后重跑脚本刷新。
