/** * 成功处理程序 * @template T */ type SuccessHandler = (data: T) => void; /** * 错误处理程序 * @param status - HTTP 状态码 * @param responseText - 响应文本 */ type ErrorHandler = (status: number, responseText: string) => void; /** * JSON 值,它可以是字符串、数字、布尔值、对象或者 JSON 值的数组。 * * @typedef {string | number | boolean | {[key: string]: JSONValue} | JSONValue[]} JSONValue */ export type JSONValue = string | number | boolean | { [key: string]: JSONValue; } | JSONValue[]; /** * 负责下载各种资源,并提供了一些异步加载和缓存管理的功能 */ export declare class Downloader { /** * 是否信任 XMLHttpRequest 的状态码为 0 的响应 * 某些浏览器在本地文件协议(file://)下会返回状态码 0,但实际上请求是成功的 * 设置为 true 可以让 Downloader 将状态码 0 视为成功 */ static trustXHRStatusZero: boolean; /** * 存储多个回调函数的对象 */ private callbacks; /** * 下载一个 JSON 文件 * @param url - 要下载的 JSON 文件的 URL * @param onSuccess - 下载成功后的回调函数 * @param onError - 下载失败后的回调函数 */ downloadJSON(url: string, onSuccess: SuccessHandler, onError: ErrorHandler): void; /** * 下载一个二进制文件 * @param url - 要下载的二进制文件的 URL * @param onSuccess - 下载成功后的回调函数 * @param onError - 下载失败后的回调函数 */ downloadBinary(url: string, onSuccess: SuccessHandler, onError: ErrorHandler): void; /** * 下载一个 Blob 文件 * @param url - 要下载的 Blob 文件的 URL * @param onSuccess - 下载成功后的回调函数 * @param onError - 下载失败后的回调函数 */ downloadBlob(url: string, onSuccess: SuccessHandler, onError: ErrorHandler): void; /** * 下载一个文本文件 * @param url - 要下载的文本文件的 URL * @param onSuccess - 下载成功后的回调函数 * @param onError - 下载失败后的回调函数 */ downloadText(url: string, onSuccess: SuccessHandler, onError: ErrorHandler): void; private download; private start; private finish; } /** * 异步加载一个 WebP 图片文件,如果不支持 WebP,则加载 PNG 图片文件 * @param png - PNG 图片文件的 URL * @param webp - WebP 图片文件的 URL */ export declare function loadWebPOptional(png: string, webp?: string): Promise<{ image: HTMLImageElement; url: string; }>; /** * 异步加载一个 AVIF 图片文件,如果不支持 AVIF,则加载 PNG 图片文件 * @param png - PNG 图片文件的 URL * @param avif - AVIF 图片文件的 URL */ export declare function loadAVIFOptional(png: string, avif?: string): Promise<{ image: HTMLImageElement; url: string; }>; /** * 异步加载一个图片文件 * @param source - 图片文件的 URL、Blob 或 HTMLImageElement 对象 */ export declare function loadImage(source: string | Blob | HTMLImageElement): Promise; /** * 异步加载一个二进制文件 * @param url - 二进制文件的 URL */ export declare function loadBinary(url: string): Promise; /** * 异步加载一个 Blob 文件 * @param url - Blob 文件的 URL */ export declare function loadBlob(url: string): Promise; /** * 异步加载一个视频文件 * @param url - 视频文件的 URL 或 MediaProvider 对象 */ export declare function loadVideo(url: string | MediaProvider): Promise; /** * 异步加载一个媒体文件 * @param url * @param loadFn * @returns */ export declare function loadMedia(url: string | string[], loadFn: (url: string) => Promise): Promise; export {};