API
ICraftPlayerOptions
| Name | description | type | default | required |
|---|---|---|---|---|
| container | 容器 DOM 元素 | HTMLDivElement | true | |
| src | .iplayer 文件地址 | string | true | |
| fetchOptions | 文件请求 fetch 配置 | RequestInit | undefined | false |
| onClick | 点击事件回调 | (params: MouseEventParams) => void | undefined | false |
| onDoubleClick | 双击事件回调 | (params: MouseEventParams) => void | undefined | false |
| onMouseMove | 鼠标移动事件回调 | (params: MouseEventParams) => void | undefined | false |
| onContextMenu | 右键事件回调 | (params: MouseEventParams) => void | undefined | false |
| onReady | 准备就绪回调 | (instance:ICraftPlayerInstance) => void | undefined | false |
| defaultCustomCamera | 初始自定义相机序号 | number | undefined | false |
| defaultAnimationPlan | 动画方案序号 | number | undefined | false |
| defaultLoop | 是否循环播放 | boolean | false | false |
| autoPlay | 是否自动播放 | boolean | false | false |
TypeScript 类型
interface MouseEventParams {
instance: Element3D | null;
event: MouseEvent;
data: OptionsType | null;
}Player 实例方法
| Name | description | type |
|---|---|---|
| getDom | 获取 dom | () => HTMLElement |
| getElementByKey | 通过唯一标识获取元素实例 | (key: string) => Element3D or undefined |
| getElementsByName | 通过名称获取多个元素实例 | (name: string) => Element3D[] |
| getCurrentSceneElements | 获取当前场景所有元素实例(不包含子场景) | () => Element3D[] |
| getAllSceneElementsData | 获取当前场景所有元素数据(包含子场景) | () => ElementData[] |
| playAnimationByElementKey | 使元素执行内置动画 | (elementKey: string,animationOptions: GlobalAnimationOptions) => Promise<Actuator | null> |
| cancelAnimationByElementKey | 根据元素 key 取消动画 | (elementKey: string) => void |
| cancelAnimation | 取消所有动画 | () => void |
| toogleView | 切换 2D/3D 视图 | (is3D: boolean) => void |
| toogleCamera | 切换相机类型(透视 or 正交) | (isPerspectiveCamera: boolean) => void |
| toogleAutoRotate | 切换自动旋转 | (isAutoRotate: boolean) => void |
| updateAutoRotateSpeed | 更新自动旋转速度 | (speed: number) => void |
| changeCustomCamera | 切换自定义相机 | (index: number, duration?: number) => void |
| enterSubScene | 进入当前选中元素的子场景 | (durations?: number) => Promise<void> |
| exitSubScene | 退出子场景 | () => Promise<void> |
| tooglePlay | 切换播放 | () => void |
| prevStep | 上一步 | () => Promise<void> |
| nextStep | 下一步 | () => Promise<void> |
| replay | 重播 | () => Promise<void> |
| reset | 重置 | () => Promise<void> |
| toggleLoop | 切换循环 | () => void |
| zoomIn | 视角放大 | () => void |
| zoomOut | 视角缩小 | () => void |
| resetCamera | 重置相机视角 | () => void |
| exportImage | 导出图片 | () => Promise<void> |
| openFileByUrl | 通过 url 打开文件 | (url: string, options?: RequestInit) => void |
TypeScript 类型
// 元素数据
interface ElementData {
key: string;
type: string;
options: OptionsType;
}Player 静态方法
| Name | description | type |
|---|---|---|
| defineConfig | 设置静态全局配置 | (config: StaticConfig) => void |
TypeScript 类型
interface StaticConfig {
// 全局字体资源路径,会影响所有文字元素,优先级最高,适用于场景只有一种字体的情况
fontUrl?: string;
// 全局字体资源定义,适用于场景有多种字体的情况
fonts?: FontFamily[];
// Draco 解码器路径,默认为unpkg路径,在网络不通unpkg情况下可以自行配置路径
dracoDecoderPath?: string;
}
export interface FontFamily {
name: string;
styles: {
weight: string;
fontUrl: string;
}[];
}Element3D 实例方法
| Name | description | type |
|---|---|---|
| setDisabled | 设置不可用状态(置灰) | (disabled: boolean) => void |
| setVisible | 设置元素是否显示 | (visible: boolean) => void |