export enum RoleType { teacher = 1, // 老师 student = 2, // 学生 fireman = 3, // 监课 parent = 6, // 家长 } export interface IDebugOption { debugEengineJson?: string; debugVFPath?: string; debugGuiPath?: string; debugPlayerPath?: string; showFPS?: boolean; debug?: boolean; showConsole?: boolean; } export interface IPlatform { /** * 教室ID * @example 参考值 jz79cd78bf33074f15ba740b14d84ab973 */ roomid?: string; /** * 用户id * @example 参考值 6311800 */ userid?: number; /** * 角色类型 */ role?: RoleType; /** * 使用方 * 本地调试: debug * 编辑器预览:editorPreview * 声网: * 百家云: */ from?: string; } export interface IVFOptions extends IDebugOption { version: string; container: HTMLElement; id?: string; scaleMode?: 'showAll' | 'noScale' | 'cover' | 'contain'; wmode?: string; bgcolor?: string; src?: string | object; vfvars?: any; /** * 平台信息 */ platform: IPlatform; /** * 帧率 */ frameRate?: number; width?: number; height?: number; /** * 以时间或帧方式执行动画 */ realFPS?: boolean; /** * 动态数据 */ conversionData?: any; /** * 内置插件 */ plugs?: any[]; /** * loading动画位置 */ // eslint-disable-next-line max-len loading?: { position: any; image?: any }; /** * 分辨率 devicePixelRatio */ resolution?: number; /** * 强制使用Canvas 渲染 */ forceCanvas?: boolean; /** * 需要强制降级的设备 * 示例:degradeDevice = [{name:"iPad2",version:8.2,format:png,scale:80}] */ degradeDevice?: { name: string; version?: number; format?: string; scale?: number }[]; /** * 是否使用播放器 */ usePlayer: boolean; } export interface ISceneAPI { /** * 初始化完成时回调 * @param err */ onInit(): void; /** * 准备工作完成时回调 (资源加载完成) */ onReady(): void; /** * 场景加载 */ onSceneLoad(msg: vf.IEvent): void; /** * 场景加载进度 */ onSceneLoadProgress(msg: vf.IEvent): void; /** * 场景加载完成时回调 */ onSceneCreate(msg: vf.IEvent): void; /** * 切换场景 * @param transition */ switchToNextScene(transition?: any): void; /** * 切换场景 * @param transition */ switchToPrevScene(transition?: any): void; /** * 切换场景 * @param transition */ switchToSceneId(sceneId: string, transition?: any): void; /** * 切换场景 * @param transition */ switchToSceneIndex(index: number, transition?: any): void; /** * 暂停 */ pause(): void; /** * 恢复 */ resume(): void; /** * 重置 */ reset(): void; } /** * 外部函数 */ export interface APICommand { app?: vf.Application; stage?: vf.gui.Stage; /** * 播放(播放地址|播放数据|恢复播放) * @param src */ play(src?: any): void; /** * 卸载 * @param boolean */ dispose(boolean?: boolean): void; /** * 设置消息 * @param msg */ message(msg: vf.IEvent): void; /** * 日志与错误时的回调 * @param err */ onError(evt: vf.IEvent): void; /** * 信令或其他消息回调 */ onMessage(msg: vf.IEvent): void; /** * 卸载时触发 */ onDispose(): void; } export type IAppOnType = 'showLoading' | 'hideLoading' | 'inputLog'; export interface IApp extends APICommand { app?: vf.Application; stage?: vf.gui.Stage; on(type: IAppOnType, fn: any, context: any): any; off(type: IAppOnType, fn: any, context: any): any; } export interface IPlayer extends IApp, ISceneAPI { // } declare module '@vf.js/launcher' { export type VFApp = IApp; export type VFPlayer = IPlayer; export type VFOptions = IVFOptions; export function createVF(options: VFOptions, completeCall: (player: IPlayer | VFApp) => void): void; export function deleteVF(): void; }