liko
    Preparing search index...

    Class Timer

    计时器类,基于帧驱动的计时系统

    主要用于渲染相关的计时回调,不适用于精确的时间判断 支持基于时间和基于帧数的两种计时模式

    // 默认情况下,使用 stage.timer 全局计时器
    const timer = stage.timer;

    // 延迟执行一次(3秒后执行)
    timer.setTimeout(3, () => console.log('3秒后执行'), this);

    // 循环执行(每2秒执行一次)
    timer.setInterval(2, () => console.log('每2秒执行'), this);

    // 每帧执行
    timer.onFrame(() => console.log('每帧执行'), this);

    // 使用系统计时器
    Timer.system.setTimeout(1, () => console.log('系统计时器'), this);

    // 延迟到下一帧执行(去重复)
    Timer.callLater(() => console.log('下一帧执行'), this);

    // 清理计时器
    timer.clearTimer(callback, this); // 清理指定回调
    timer.clearAll(this); // 清理指定caller的所有回调
    timer.destroy(); // 销毁整个计时器

    @注意事项

    • 循环计时器的最小间隔:基于时间的为0.001秒,基于帧的为1帧
    • 重复注册相同的callback和caller会先清理之前的注册
    • 使用Timer.system需要手动清理,建议优先使用stage的timer实例
    • Timer.callLater每帧多次调用相同callback和caller只会执行一次
    • 计时器暂停或销毁后不会执行回调
    Index

    Constructors

    Properties

    currentFrame: number = 0

    当前累计帧数

    自计时器创建以来的总帧数,用于基于帧的计时判断

    currentTime: number = 0

    当前累计时间,单位为秒

    受时间缩放系数影响的累计时间,用于基于时间的计时判断

    delta: number = 0

    每帧时间间隔,单位为秒

    在update方法中自动计算,表示当前帧与上一帧的时间差

    scale: number = 1

    时间缩放系数

    影响计时器的时间流逝速度,1为正常速度,0.5为半速,2为双速 只影响基于时间的计时器,不影响基于帧的计时器

    system: Timer = ...

    系统级 Timer 实例,全局共享

    @注意 使用此实例需要手动清理,业务代码应优先使用 stage 的 timer 实例

    Accessors

    • get count(): number

      当前计时器中的有效监听数量

      不包括已销毁的计时器处理器

      Returns number

    • get destroyed(): boolean

      计时器是否已销毁

      销毁后无法添加新的计时回调,update方法也不会执行

      Returns boolean

    • get paused(): boolean

      计时器是否暂停

      暂停状态下delta为0,所有计时回调不会执行

      Returns boolean

    Methods

    • 清理计时回调

      Parameters

      • Optionalcaller: any

        指定函数域,如果不指定,则清除本计时器所有回调

      Returns void

    • 清理指定计时回调

      Parameters

      • callback: (...args: any[]) => void

        回调函数

      • Optionalcaller: unknown

        调用者,如果不指定则清理所有匹配callback的回调

      Returns void

    • 销毁计时器

      清理所有计时回调并标记为已销毁,销毁后无法恢复

      Returns void

    • 每帧执行回调

      Type Parameters

      • T extends (...args: any[]) => void

      Parameters

      • callback: T

        回调函数

      • Optionalcaller: unknown

        调用者,用于标识回调归属和清理,重复注册会先清理之前的注册

      • ...args: Parameters<T>

        回调参数

      Returns void

    • 暂停计时器

      暂停后delta为0,所有计时回调停止执行,但计时器状态保持

      Returns void

    • 恢复计时器

      恢复计时器的正常运行,继续执行计时回调

      Returns void

    • 循环延迟执行计时回调

      Type Parameters

      • T extends (...args: any[]) => void

      Parameters

      • interval: number

        时间间隔,单位为秒,最小值为0.001秒

      • callback: T

        回调函数

      • Optionalcaller: unknown

        调用者,用于标识回调归属和清理,重复注册会先清理之前的注册

      • ...args: Parameters<T>

        回调参数

      Returns void

    • 延迟执行计时回调一次

      Type Parameters

      • T extends (...args: any[]) => void

      Parameters

      • delay: number

        延迟时间,单位为秒,必须大于0

      • callback: T

        回调函数

      • Optionalcaller: unknown

        调用者,用于标识回调归属和清理,重复注册会先清理之前的注册

      • ...args: Parameters<T>

        回调参数

      Returns void

    • 更新计时器

      通常在游戏主循环中调用,用于驱动所有计时回调的执行

      Parameters

      • currTime: number = Timer.system.currentTime

        当前时间,单位为秒,默认使用系统计时器的当前时间

      Returns void

    • 在渲染之前延迟执行,用于减少重复计算

      每帧多次调用相同的callback和caller只会执行一次,适用于需要去重的延迟执行场景

      Type Parameters

      • T extends (...args: any[]) => void

      Parameters

      • callback: T

        回调函数

      • Optionalcaller: unknown

        调用者,用于标识回调的归属和去重

      • ...args: Parameters<T>

        回调参数

      Returns boolean

      是否添加成功,重复添加相同callback和caller只有第一次成功

    • 执行所有延迟回调

      通常在每帧渲染前调用,执行所有通过callLater注册的回调

      Returns void