player-javascript
API

API

ICraftPlayerOptions

Namedescriptiontypedefaultrequired
container容器 DOM 元素HTMLDivElementtrue
src.iplayer 文件地址stringtrue
fetchOptions文件请求 fetch 配置RequestInitundefinedfalse
onClick点击事件回调(params: MouseEventParams) => voidundefinedfalse
onDoubleClick双击事件回调(params: MouseEventParams) => voidundefinedfalse
onMouseMove鼠标移动事件回调(params: MouseEventParams) => voidundefinedfalse
onContextMenu右键事件回调(params: MouseEventParams) => voidundefinedfalse
onReady准备就绪回调(instance:ICraftPlayerInstance) => voidundefinedfalse
defaultCustomCamera初始自定义相机序号numberundefinedfalse
defaultAnimationPlan动画方案序号numberundefinedfalse
defaultLoop是否循环播放booleanfalsefalse
autoPlay是否自动播放booleanfalsefalse

TypeScript 类型

interface MouseEventParams {
  instance: Element3D | null;
  event: MouseEvent;
  data: OptionsType | null;
}

Player 实例方法

Namedescriptiontype
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 静态方法

Namedescriptiontype
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 实例方法

Namedescriptiontype
setDisabled设置不可用状态(置灰)(disabled: boolean) => void
setVisible设置元素是否显示(visible: boolean) => void