liko
    Preparing search index...

    Class LoaderManager

    资源加载管理器,负责资源的加载、缓存和事件分发

    该类提供统一的资源加载接口,支持多种资源类型的加载器注册, 内置资源缓存机制和加载进度追踪,通过事件系统通知加载状态变化。

    支持的事件类型:

    • EventType.progress: 加载进度更新 (参数: progress: number)
    • EventType.loaded: 单个资源加载完成 (参数: url: string, resource: any)
    • EventType.error: 资源加载失败 (参数: url: string, error: string)
    • EventType.complete: 所有资源加载完成
    // 注册自定义加载器
    LoaderManager.regLoader({
    test: (type) => type === 'json',
    load: async (url) => {
    const response = await fetch(url);
    return response.json();
    }
    });

    // 监听加载事件
    loader.on(EventType.progress, (progress) => {
    console.log(`加载进度: ${Math.round(progress * 100)}%`);
    });

    loader.on(EventType.complete, () => {
    console.log('所有资源加载完成');
    });

    // 加载资源
    const texture = await loader.load<Texture>('/assets/sprite.png');
    const data = await loader.load<any>('/data/config.json');

    // 批量加载
    const promises = [
    loader.load('/assets/bg.jpg'),
    loader.load('/sounds/music.mp3'),
    loader.load('/data/levels.json')
    ];
    await Promise.all(promises);

    Hierarchy (View Summary)

    Index

    Constructors

    Properties

    cacheMap: Record<string, any> = {}

    存储已加载资源的缓存映射表

    注意事项:

    • 直接修改此对象可能导致缓存不一致,建议使用 cache() 和 get() 方法
    • 大量缓存可能占用内存,适时使用 unload() 或 clear() 清理

    Accessors

    • get loaded(): number

      已完成加载的资源数量

      包括成功加载和加载失败的资源数量,用于计算加载进度。

      Returns number

    • get loadingCount(): number

      当前正在加载中的资源数量

      计算公式:total - loaded

      Returns number

    • get total(): number

      待加载的资源总数

      该数值在调用 load() 方法时自动递增,用于计算加载进度。 可以通过 resetCount() 方法重置计数器。

      Returns number

    Methods

    • 将资源存入缓存

      注意事项:

      • 只有当资源不为 undefined 时才会存入缓存
      • 重复缓存同一 URL 会覆盖之前的资源
      • 缓存的资源会一直占用内存直到被 unload() 或 clear()

      Parameters

      • url: string

        资源的 URL 地址

      • res: unknown

        要缓存的资源对象

      Returns void

    • 清空所有已缓存的资源并重置加载状态

      该方法会:

      1. 卸载所有缓存的资源(调用各自的清理方法)
      2. 清空正在加载的资源映射表
      3. 重置加载计数器

      注意事项:

      • 清空后所有资源都需要重新加载
      • 正在进行的加载操作不会被中断,但结果不会被缓存
      • 适合在场景切换或内存清理时使用

      Returns void

    • 派发事件,通知所有监听该事件的处理器

      Parameters

      • type: string

        事件类型,不区分大小写

      • ...args: unknown[]

        传递给监听器的参数,支持任意数量和类型的参数

        @注意事项

        • 事件派发期间新增的同类型事件监听器不会收到当前事件通知
        • once监听器执行后会立即从监听列表中移除
        • 如果没有对应类型的监听器,不会执行任何操作

      Returns void

    • 从缓存中获取资源

      Type Parameters

      • T

        期望的资源类型

      Parameters

      • url: string

        资源的 URL 地址

      Returns undefined | T

      返回缓存的资源,如果不存在则返回 undefined

    • 检查是否有特定类型的事件监听器

      Parameters

      • type: string

        事件类型,不区分大小写

      Returns boolean

      如果存在该类型的事件监听器返回true,否则返回false

    • 加载指定的资源

      该方法会自动处理资源缓存、重复加载防护和加载进度统计。

      注意事项:

      • 相同 URL 的资源只会加载一次,后续调用会返回缓存结果
      • 如果没有合适的加载器,会返回 undefined 而不是抛出异常
      • 加载失败时返回 undefined,具体错误通过 error 事件通知
      • 资源类型自动根据文件扩展名判断,也可手动指定 type 参数

      Type Parameters

      • T

        资源类型

      Parameters

      • url: string

        资源的 URL 地址

      • Optionaltype: string

        可选的资源类型,若未指定则根据 URL 后缀自动判断

      Returns Promise<undefined | T>

      返回加载完成的资源,加载失败时返回 undefined

    • 取消事件监听

      Parameters

      • type: string

        事件类型,不区分大小写

      • Optionallistener: (...args: unknown[]) => void

        要取消的回调函数,如果为空则删除该类型的所有事件监听

      • Optionalcaller: unknown

        回调函数执行上下文,用于精确匹配要取消的监听器

        @注意事项

        • 如果不提供listener参数,会删除该事件类型的所有监听器
        • caller参数用于区分相同函数但不同上下文的监听器

      Returns void

    • 取消特定上下文的所有事件监听

      Parameters

      • Optionalcaller: unknown

        函数上下文,如果为空则清空所有事件监听

        @注意事项

        • 不提供caller参数会清空所有事件监听
        • 提供caller参数只会清空该上下文下的所有监听器

      Returns void

    • 注册事件监听器

      Parameters

      • type: string

        事件类型,不区分大小写

      • listener: (...args: unknown[]) => void

        回调函数,接收事件参数

      • Optionalcaller: unknown

        回调函数执行上下文,决定函数内this的指向

        @注意事项

        • 多次注册相同的监听器只生效最后一次
        • 会先自动取消之前的注册,避免重复监听

      Returns void

    • 注册一次性事件监听器,事件被执行后自动取消监听

      Parameters

      • type: string

        事件类型,不区分大小写

      • listener: (...args: unknown[]) => void

        回调函数,接收事件参数

      • Optionalcaller: unknown

        回调函数执行上下文,决定函数内this的指向

        @注意事项

        • 监听器只会执行一次,执行后自动销毁
        • 多次注册相同的监听器只生效最后一次

      Returns void

    • 重置加载计数器,用于重新开始加载进度的计算

      该方法会将 total 计数器减去已加载的数量,并将 loaded 重置为 0, 适合在需要重新计算加载进度时使用。

      注意事项:

      • 不会影响已缓存的资源
      • 不会中断正在进行的加载操作
      • 主要用于进度统计的重置,而非资源管理

      Returns void

    • 卸载并释放相关资源

      该方法会尝试调用资源的 destroy() 或 dispose() 方法进行清理, 然后从缓存中移除该资源。

      注意事项:

      • 卸载后的资源无法再次获取,需要重新加载
      • 如果资源正在被使用,卸载可能导致错误
      • 支持自动调用资源的清理方法(destroy/dispose)

      Parameters

      • url: string

        要卸载的资源 URL 地址

      Returns void

    • 注册一个新的资源加载器

      注意事项:

      • 加载器按注册顺序进行测试,建议将更具体的加载器放在前面
      • 同一类型可以注册多个加载器,会使用第一个匹配的加载器
      • 加载器应该确保 test 方法的准确性,避免误匹配

      Parameters

      • loader: ILoader

        实现了 ILoader 接口的加载器实例

      Returns void