用于记录素材在视频或画布中的空间属性:位置、大小、旋转

并提供控制点位置,支持用户在画布中缩放、旋转素材

一般由内部 WebAV SDK 内部创建维护

Implements

  • IRectBaseProps

Constructors

Properties

#angle: number = 0
#evtTool: EventTool<{
    propsChange: ((props) => void);
}> = ...

Type declaration

  • propsChange: ((props) => void)
      • (props): void
      • Parameters

        • props: Partial<IRectBaseProps>

        Returns void

#h: number = 0
#w: number = 0
#x: number = 0
#y: number = 0
fixedAspectRatio: boolean = false

是否保持固定宽高比例,禁止变形缩放

值为 true 时,Rect.ctrls 将缺少上下左右四个控制点

master: null | Rect = null

如果当前实例是 Rect 控制点(Rect.ctrls)之一,master 将指向该 Rect

控制点的坐标是相对于它的 master 定位到

on: (<Type>(type, listener) => (() => void)) = ...

监听属性变更事件

Type declaration

    • <Type>(type, listener): (() => void)
    • Type Parameters

      • Type extends "propsChange"

      Parameters

      • type: Type
      • listener: {
            propsChange: ((props) => void);
        }[Type]

      Returns (() => void)

        • (): void
        • Returns void

Example

rect.on('propsChange', (changedProps) => {})
CTRL_KEYS: readonly ["t", "b", "l", "r", "lt", "lb", "rt", "rb", "rotate"] = ...

控制点:上、下、左、右,左上、左下、右上、右下、旋转

CTRL_SIZE: number = 16

统一设置所有 Rect.ctrls 的边长

⚠️ 交给 AVCanvas 设置,不要随意改变它的值

Accessors

  • get ctrls(): {
        b?: undefined;
        l?: undefined;
        lb: Rect;
        lt: Rect;
        r?: undefined;
        rb: Rect;
        rotate: Rect;
        rt: Rect;
        t?: undefined;
    } | {
        b: Rect;
        l: Rect;
        lb: Rect;
        lt: Rect;
        r: Rect;
        rb: Rect;
        rotate: Rect;
        rt: Rect;
        t: Rect;
    }
  • 根据坐标、宽高计算出来的矩形控制点

    Rect.fixedAspectRatio = true 时,将缺少上下左右(t,b,l,r)四个控制点

    Returns {
        b?: undefined;
        l?: undefined;
        lb: Rect;
        lt: Rect;
        r?: undefined;
        rb: Rect;
        rotate: Rect;
        rt: Rect;
        t?: undefined;
    } | {
        b: Rect;
        l: Rect;
        lb: Rect;
        lt: Rect;
        r: Rect;
        rb: Rect;
        rotate: Rect;
        rt: Rect;
        t: Rect;
    }

Methods