contextUpdateSprite 上下文方法 - 更新精灵层
contextUpdateSprite
类型: MethodDeclaration
所属类: AnimationPlayer
定义位置: animation.ts
描述
上下文方法 - 更新精灵层
参数 frame: 动画图层当前帧的数据
参数 time: 当前帧到下一帧的过渡时间(比率)
参数 next: 动画图层下一帧的数据
参数
| 参数名 | 类型 | 描述 | 默认值 | 
|---|---|---|---|
| this | AnimationFrameContext | - | - | 
| frame | AnimationSpriteFrame | - | - | 
| time | number | - | - | 
| next | AnimationSpriteFrame | - | - | 
返回值
类型: void
源代码
位置: 第 1128 行
private static contextUpdateSprite(this: AnimationFrameContext, frame: AnimationSpriteFrame, time?: number, next?: AnimationSpriteFrame): void {
    AnimationPlayer.contextUpdate.call(this, frame, time, next)
    // 读取当前动画帧的参数
    let anchorX = frame.anchorX
    let anchorY = frame.anchorY
    let pivotX = frame.pivotX
    let pivotY = frame.pivotY
    let red = frame.tint[0]
    let green = frame.tint[1]
    let blue = frame.tint[2]
    let gray = frame.tint[3]
    // 与下一帧参数进行插值计算
    if (next !== undefined) {
      const reverse = 1 - time!
      anchorX = anchorX * reverse + next.anchorX * time!
      anchorY = anchorY * reverse + next.anchorY * time!
      pivotX = pivotX * reverse + next.pivotX * time!
      pivotY = pivotY * reverse + next.pivotY * time!
      red = red * reverse + next.tint[0] * time!
      green = green * reverse + next.tint[1] * time!
      blue = blue * reverse + next.tint[2] * time!
      gray = gray * reverse + next.tint[3] * time!
    }
    // 混合全局色调
    for (const tint of this.animation.tints) {
      red += tint[0]
      green += tint[1]
      blue += tint[2]
      gray += tint[3]
    }
    // 获取或创建色调数组
    let tint = this.tint
    if (tint === null) {
      tint = this.tint = new Int16Array(4)
    }
    // 写入参数(限制色调范围)
    this.anchorX = anchorX
    this.anchorY = anchorY
    this.pivotX = pivotX
    this.pivotY = pivotY
    tint[0] = Math.clamp(red, -255, 255)
    tint[1] = Math.clamp(green, -255, 255)
    tint[2] = Math.clamp(blue, -255, 255)
    tint[3] = Math.clamp(gray, 0, 255)
  }
文档生成时间:2025/7/21 20:53:39