liko
    Preparing search index...

    Class Canvas

    Canvas 矢量图形绘制类

    Hierarchy (View Summary)

    Implements

    • IRenderable
    Index

    Constructors

    Properties

    cacheEnabled: boolean = false

    是否缓存为静态渲染,对有大量不变子节点的容器可提升渲染效率

    enabled: boolean = true

    是否启用节点,设为 false 时节点不可用且脚本不执行,而 visible 只影响显示

    label: string = ''

    节点标签名称,用于快速查找和识别节点

    pointerEnabled: boolean = false

    是否支持鼠标事件,默认不支持,添加鼠标事件监听后会自动启用 当父节点 pointerEnabled=true 时,会优先判断父节点命中后再判定子节点,以提高性能

    pointerEnabledForChildren: boolean = false

    是否支持子节点鼠标事件判定,添加鼠标事件监听后会自动启用 当节点 pointerEnabled=false 但 pointerEnabledForChildren=true 时,仍会尝试命中子节点并冒泡

    renderObject: SpriteObject = ...

    Accessors

    • get alpha(): number

      节点透明度,范围 0-1,0 表示完全透明

      Returns number

    • set alpha(value: number): void

      Parameters

      • value: number

      Returns void

    • get angle(): number

      节点旋转角度,底层仍使用 rotation(弧度)存储

      Returns number

    • set angle(value: number): void

      Parameters

      • value: number

      Returns void

    • get children(): LikoNode[]

      子节点列表,可直接读取但不应直接修改此数组

      Returns LikoNode[]

    • get destroyed(): boolean

      是否已被销毁,销毁后不可再用

      Returns boolean

    • get filters(): Filter[]

      滤镜列表,可直接读取但不应直接修改此数组

      Returns Filter[]

    • get height(): number

      节点高度,单位为像素

      Returns number

    • set height(value: number): void

      Parameters

      • value: number

      Returns void

    • get id(): string

      节点 id,作为节点的唯一标识符

      Returns string

    • set id(value: string): void

      Parameters

      • value: string

      Returns void

    • get localMatrix(): Matrix

      本地矩阵,相对于父节点的变换矩阵

      Returns Matrix

    • set localMatrix(value: Matrix): void

      Parameters

      Returns void

    • get parent(): undefined | LikoNode

      父节点引用,只有被添加到父节点内此属性才有值

      Returns undefined | LikoNode

    • set parent(value: undefined | LikoNode): void

      Parameters

      Returns void

    • get pivot(): IPoint

      节点轴心点,影响节点旋转和缩放的中心点(只读)

      Returns IPoint

    • get rotation(): number

      节点旋转弧度,以弧度为单位

      Returns number

    • set rotation(value: number): void

      Parameters

      • value: number

      Returns void

    • get scene(): undefined | IScene

      场景节点引用,只有被添加到场景后此属性才有值(建议缓存为局部变量以减少遍历开销)

      Returns undefined | IScene

    • get scripts(): ScriptBase[]

      脚本列表,可直接读取但不应直接修改此数组

      Returns ScriptBase[]

    • set scripts(value: ScriptBase[]): void

      Parameters

      Returns void

    • get stage(): undefined | Stage

      舞台节点引用,只有被添加到舞台后此属性才有值

      Returns undefined | Stage

    • get texture(): Texture

      获取渲染纹理对象,在需要时自动更新画布内容

      Returns Texture

    • get tintColor(): ColorData

      节点叠加颜色,用于调整节点的颜色

      Returns ColorData

    • set tintColor(value: ColorData): void

      Parameters

      • value: ColorData

      Returns void

    • get transform(): Transform

      节点变换对象,管理位置、旋转、缩放等变换属性

      Returns Transform

    • get userData(): Record<string, any>

      自定义数据,用于存储额外信息,如 node.userData.speed = 1

      Returns Record<string, any>

    • set userData(value: Record<string, any>): void

      Parameters

      • value: Record<string, any>

      Returns void

    • get visible(): boolean

      是否可见,不可见时不会被渲染

      Returns boolean

    • set visible(value: boolean): void

      Parameters

      • value: boolean

      Returns void

    • get width(): number

      节点宽度,单位为像素

      Returns number

    • set width(value: number): void

      Parameters

      • value: number

      Returns void

    • get worldAlpha(): number

      节点世界透明度,考虑了父节点透明度的最终透明度

      Returns number

    • get worldMatrix(): Matrix

      世界矩阵,相对于舞台的变换矩阵

      Returns Matrix

    Methods

    • 添加子节点到当前节点

      如果子节点已有父节点,会先从原父节点中移除。添加后子节点会继承当前节点的舞台引用, 并触发 added 事件。如果指定了索引,子节点会被插入到指定位置。

      Type Parameters

      Parameters

      • child: T

        要添加的子节点

      • Optionalindex: number

        指定添加的索引位置(可选)

      Returns this

      当前节点实例,支持链式调用

    • 添加滤镜到当前节点

      将指定的滤镜实例添加到当前节点,使节点在渲染时应用该滤镜效果。

      Type Parameters

      • T extends Filter

      Parameters

      • filter: T

        要添加的滤镜实例

      Returns this

      当前节点实例,支持链式调用

    • 添加脚本到当前节点

      将指定的脚本实例添加到当前节点,并设置脚本的目标节点为当前节点。 添加后脚本会自动执行其生命周期方法(onCreate 等)。

      Type Parameters

      Parameters

      • script: T

        要添加的脚本实例

      Returns this

      当前节点实例,支持链式调用

    • 绘制圆弧路径

      Parameters

      • x: number

        圆弧圆心的 x 坐标

      • y: number

        圆弧圆心的 y 坐标

      • radius: number

        圆弧半径

      • startAngle: number

        开始角度(弧度)

      • endAngle: number

        结束角度(弧度)

      Returns this

      当前实例,支持链式调用

    • 根据两个控制点绘制圆弧路径

      Parameters

      • x1: number

        控制点 1 的 x 坐标

      • y1: number

        控制点 1 的 y 坐标

      • x2: number

        控制点 2 的 x 坐标

      • y2: number

        控制点 2 的 y 坐标

      • radius: number

        圆弧半径

      Returns this

      当前实例,支持链式调用

    • 开始一个新的路径

      绘制闭环路径时,需要调用 beginPath 和 closePath

      Returns this

      当前实例,支持链式调用

    • 绘制三次贝塞尔曲线路径

      起点是当前路径最后落点,有两个控制点,x 和 y 是终点

      Parameters

      • cp1x: number

        控制点 1 的 x 坐标

      • cp1y: number

        控制点 1 的 y 坐标

      • cp2x: number

        控制点 2 的 x 坐标

      • cp2y: number

        控制点 2 的 y 坐标

      • x: number

        终点的 x 坐标

      • y: number

        终点的 y 坐标

      Returns this

      当前实例,支持链式调用

    • 绘制圆形路径

      Parameters

      • centerX: number

        圆心的 x 坐标

      • centerY: number

        圆心的 y 坐标

      • radius: number

        圆的半径

      Returns this

      当前实例,支持链式调用

    • 清理所有绘制命令和画布内容

      Returns this

      当前实例,支持链式调用

    • 创建裁剪区域

      Parameters

      • Optionalpath: Path2D

        可选的 Path2D 对象

      Returns this

      当前实例,支持链式调用

    • 闭合当前路径

      Returns this

      当前实例,支持链式调用

    • 销毁当前节点的所有子节点

      与 removeChildren 不同,此方法会彻底销毁子节点,销毁后子节点不可再用。 销毁过程会递归处理所有子节点,清理所有资源和事件监听。

      Returns this

      当前节点实例,支持链式调用

    • 销毁当前节点的所有滤镜

      彻底销毁当前节点的所有滤镜实例,销毁后滤镜不可再用。

      Returns this

      当前节点实例,支持链式调用

    • 销毁当前节点的所有脚本 销毁后脚本不可再用

      Returns this

      当前节点实例,支持链式调用

    • 绘制完整图像

      Parameters

      • image: ImageSource

        图片、canvas 或 Texture 对象

      • x: number

        目标 x 坐标

      • y: number

        目标 y 坐标

      Returns this

      当前实例,支持链式调用

    • 绘制缩放后的图像

      Parameters

      • image: ImageSource

        图片、canvas 或 Texture 对象

      • x: number

        目标 x 坐标

      • y: number

        目标 y 坐标

      • width: number

        目标宽度

      • height: number

        目标高度

      Returns this

      当前实例,支持链式调用

    • 绘制 SVG 图像

      Parameters

      • svgStr: string

        SVG 字符串

      • destX: number = 0

        目标 x 坐标

      • destY: number = 0

        目标 y 坐标

      • scale: number = 1

        缩放比例

      Returns this

      当前实例,支持链式调用

    • 绘制椭圆路径或圆弧

      通过设置 startAngle 和 endAngle,还可以绘制圆弧

      Parameters

      • centerX: number

        椭圆圆心的 x 坐标

      • centerY: number

        椭圆圆心的 y 坐标

      • radiusX: number

        椭圆水平半径

      • radiusY: number

        椭圆垂直半径

      • startAngle: number = 0

        开始角度(弧度)

      • endAngle: number = PI2

        结束角度(弧度)

      Returns this

      当前实例,支持链式调用

    • 派发事件

      触发指定类型的事件,并将参数传递给所有注册的监听器。 事件会按照注册顺序依次调用监听器,并支持传递任意数量的参数。 事件会在当前节点触发,并根据事件类型可能会向上冒泡到父节点。

      Parameters

      • type: string

        事件类型,不区分大小写

      • ...args: any[]

        传递给监听器的参数,支持多个参数

      Returns this

      当前节点实例,支持链式调用

    • 填充当前路径

      Parameters

      • Optionaloptions: { color: ColorData }

        填充选项

      Returns this

      当前实例,支持链式调用

    • 根据筛选条件查找子节点

      在当前节点的子节点中查找符合指定条件的节点,支持按 ID、标签或类型查找。 可以选择是否递归查找所有后代节点。

      Type Parameters

      Parameters

      • options: { Class?: typeof LikoNode; deep?: boolean; id?: string; label?: string }

        筛选条件,可包含 id、label、Class 和 deep 选项

      Returns undefined | T

      返回匹配的子节点,如果未找到则返回 undefined

    • 根据筛选条件查找滤镜实例

      在当前节点的滤镜列表中查找符合指定条件的滤镜实例。 支持按 ID、标签或类型查找。

      Type Parameters

      • T extends Filter

      Parameters

      • options: { Class?: typeof Filter; id?: string; label?: string }

        筛选条件,可包含 id、label 和 Class 选项

      Returns undefined | T

      返回匹配的滤镜实例,如果未找到则返回 undefined

    • 根据筛选条件查找脚本实例

      在当前节点的脚本列表中查找符合指定条件的脚本实例。 支持按 ID、标签或类型查找。

      Type Parameters

      Parameters

      • options: { Class?: typeof ScriptBase; id?: string; label?: string }

        筛选条件,可包含 id、label 和 Class 选项

      Returns undefined | T

      返回匹配的脚本实例,如果未找到则返回 undefined

    • 从 JSON 数据创建或更新节点

      Parameters

      Returns this

      返回当前节点实例,支持链式调用

    • 获取当前节点在父节点中的索引位置

      Returns number

      返回在父节点中的索引,如果没有父节点则返回 -1

    • 获取本地边界(相对于父节点)

      计算节点在本地坐标系中的边界矩形,用于碰撞检测、点击测试和布局计算等。 如果节点设置了明确的宽高,则直接使用这些值;否则会根据节点内容计算边界。

      Returns Bounds

      返回本地边界对象

      返回值在节点级别复用,如需延迟使用应调用 clone 方法。 当节点的尺寸或子节点发生变化时,会重新计算边界。 子类可以通过重写 _customLocalBounds 方法来自定义边界计算逻辑。

    • 获取世界边界,相对于指定根节点

      计算节点在世界坐标系(或指定根节点坐标系)中的边界矩形,考虑了所有父节点的变换。 此方法常用于可见性检测、相机裁剪和全局碰撞检测等场景。

      Parameters

      • Optionalroot: LikoNode

        相对参考节点,为空则默认相对于舞台

      Returns Bounds

      返回相对于世界或指定节点的边界对象

      返回值在节点级别复用,如需延迟使用应调用 clone 方法。 此方法会考虑节点的位置、缩放和旋转等变换因素。 与 getWorldRotatingRect 不同,此方法返回的是轴对齐的边界矩形,不考虑旋转角度。

    • 获取世界旋转边界,考虑了旋转角度的精确边界

      与 getWorldBounds 不同,此方法返回的是考虑了旋转角度的精确边界矩形, 适用于需要精确碰撞检测或旋转对象交互的场景。

      Parameters

      • Optionalroot: LikoNode

        相对参考节点,为空则默认相对于舞台

      Returns RotatingRect

      返回考虑旋转的边界对象

      返回值在节点级别复用,如需延迟使用应调用 clone 方法。

    • 获取世界旋转值(考虑所有父节点的旋转)

      Parameters

      • Optionalroot: LikoNode

        相对参考节点,为空则默认相对于舞台

      Returns number

      返回世界旋转值,单位为弧度

    • 获取世界缩放值(考虑所有父节点的缩放)

      Parameters

      • Optionalroot: LikoNode

        相对参考节点,为空则默认相对于舞台

      • Optionalout: IPoint

        输出结果的对象(可选,不提供则创建新对象)

      Returns IPoint

      返回世界缩放值

    • 检查是否存在指定类型的事件监听器

      判断当前节点是否注册了指定类型的事件监听器,用于条件判断和性能优化。

      Parameters

      • type: string

        事件类型,不区分大小写

      Returns boolean

      如果存在监听器则返回 true,否则返回 false

    • 检测指定点是否在节点内部

      判断世界坐标系中的点是否位于节点的可见区域内,用于鼠标交互和碰撞检测。 首先将世界坐标转换为节点的本地坐标,然后检查是否在节点的边界内。

      Parameters

      • point: IPoint

        要检测的点(世界坐标)

      Returns boolean

      如果点在节点内部则返回 true,否则返回 false

      如果节点设置了明确的宽高,则使用这些值进行判断; 否则会使用 getLocalBounds 计算的边界进行判断。 此方法不考虑节点的透明度和可见性,只进行几何判断。

    • 判断某点是否在矢量图形内部

      Parameters

      • position: { x: number; y: number }

        世界坐标点

      Returns boolean

      点是否在路径内

    • 从当前位置绘制线段到指定位置

      Parameters

      • x: number

        目标点的 x 坐标

      • y: number

        目标点的 y 坐标

      Returns this

      当前实例,支持链式调用

    • 将本地坐标转换为世界坐标

      将节点本地坐标系中的点转换为世界坐标系(或指定根节点坐标系)中的点。 此方法在处理交互、碰撞检测和跨节点操作时非常有用。

      Type Parameters

      Parameters

      • position: IPoint

        相对于当前节点的本地坐标

      • Optionalout: P

        输出结果的对象(可选,不提供则创建新对象)

      • Optionalroot: LikoNode

        相对参考节点,为空则默认相对于舞台

      Returns P

      返回转换后的世界坐标

      转换过程会考虑节点及其所有父节点的位置、缩放和旋转。 如果指定了 root 参数,则结果将相对于该节点的坐标系。

    • 当节点发生变化后,标记为脏状态以便在下一帧更新

      Parameters

      • type: DirtyType

        脏标记类型,指示哪种属性发生了变化

      Returns void

    • 移动绘制起点到指定位置

      Parameters

      • x: number

        目标点的 x 坐标

      • y: number

        目标点的 y 坐标

      Returns this

      当前实例,支持链式调用

    • 移除事件监听器

      移除之前通过 on 或 once 方法注册的事件监听器。需要提供完全相同的参数才能成功移除。

      Parameters

      • type: string

        事件类型,不区分大小写

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

        要移除的回调函数

      • Optionalcaller: any

        回调函数的调用者

      Returns this

      当前节点实例,支持链式调用

    • 移除特定调用者的所有事件监听器

      一次性移除特定调用者注册的所有事件监听器,或在不指定调用者时移除所有监听器。 这在组件销毁或重置时特别有用。

      Parameters

      • Optionalcaller: unknown

        调用者对象,如果为空则移除所有事件监听器

      Returns this

      当前节点实例,支持链式调用

    • 注册事件监听器

      为节点添加事件监听器,当指定类型的事件触发时,会调用提供的回调函数。 如果注册的是指针事件(如 click、pointerdown 等),会自动启用节点的指针交互功能。

      Parameters

      • type: string

        事件类型,不区分大小写

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

        事件触发时的回调函数

      • Optionalcaller: any

        回调函数的调用者,通常为 this

      Returns this

      当前节点实例,支持链式调用

      对同一事件类型、监听器和调用者,多次注册只会生效最后一次。 事件系统支持冒泡机制,子节点触发的事件会向上传递到父节点。

    • 注册一次性事件监听器,事件触发一次后自动移除

      与 on 方法类似,但监听器只会被触发一次,之后会自动移除。 这对于只需要响应一次的事件(如初始化完成、资源加载等)非常有用。

      Parameters

      • type: string

        事件类型,不区分大小写

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

        事件触发时的回调函数

      • Optionalcaller: any

        回调函数的调用者,通常为 this

      Returns this

      当前节点实例,支持链式调用

      对同一事件类型、监听器和调用者,多次注册只会生效最后一次。 如果注册的是指针事件,会自动启用节点的指针交互功能。

    • 绘制多边形路径

      Parameters

      • points: IPoint[]

        多边形顶点坐标数组

      Returns this

      当前实例,支持链式调用

    • 绘制二次贝塞尔曲线路径

      起点是当前路径最后落点,cpx 和 cpy 是控制点,x 和 y 是终点

      Parameters

      • cpx: number

        控制点的 x 坐标

      • cpy: number

        控制点的 y 坐标

      • x: number

        终点的 x 坐标

      • y: number

        终点的 y 坐标

      Returns this

      当前实例,支持链式调用

    • 绘制矩形路径

      Parameters

      • x: number

        左上角的 x 坐标

      • y: number

        左上角的 y 坐标

      • width: number

        矩形宽度

      • height: number

        矩形高度

      Returns this

      当前实例,支持链式调用

    • 从当前节点中删除指定的子节点

      将指定的子节点从当前节点的子节点列表中移除,但不会销毁该子节点。 移除后,子节点的 parent 和 stage 引用会被清除,并触发 removed 事件。

      Type Parameters

      Parameters

      • Optionalchild: T

        要删除的子节点

      Returns this

      当前节点实例,支持链式调用

    • 删除当前节点的所有子节点

      将所有子节点从当前节点的子节点列表中移除,但不会销毁这些子节点。 子节点会被从节点树中移除,可以被重新添加到其他节点中。 所有被移除的子节点会触发 removed 事件。

      Returns this

      当前节点实例,支持链式调用

    • 从当前节点移除指定的滤镜

      将指定的滤镜实例从当前节点的滤镜列表中移除,但不会销毁该滤镜。

      Type Parameters

      • T extends Filter

      Parameters

      • Optionalfilter: T

        要移除的滤镜实例

      Returns this

      当前节点实例,支持链式调用

    • 将当前节点从其父节点中移除

      从父节点的子节点列表中移除当前节点,但不会销毁当前节点。 即使没有被添加到父节点,调用此方法也不会报错。

      Returns this

      当前节点实例,支持链式调用

    • 绘制圆角矩形路径

      Parameters

      • x: number

        左上角的 x 坐标

      • y: number

        左上角的 y 坐标

      • width: number

        矩形宽度

      • height: number

        矩形高度

      • Optionalradii: number | DOMPointInit | (number | DOMPointInit)[]

        圆角半径,可以是单个数值或多个值

      Returns this

      当前实例,支持链式调用

    • 修改子节点在子节点列表中的索引位置

      Parameters

      • child: LikoNode

        要修改索引的子节点

      • index: number

        新的索引位置

      Returns this

      当前节点实例,支持链式调用

      如果索引超出范围则抛出错误

    • 通过滤镜数据列表重置节点的滤镜

      会先清除现有滤镜,然后根据数据创建新滤镜。 此方法通常用于从序列化数据恢复节点的滤镜效果。

      Parameters

      Returns this

      当前节点实例,支持链式调用

      滤镜创建过程会使用注册系统查找对应的滤镜类,并实例化。 创建后会自动设置滤镜的属性,并将滤镜添加到节点。

    • 根据 JSON 数据设置节点属性

      批量设置节点的属性值,支持设置任何节点的公开属性。 特别地,对于以 "on" 开头的属性(如 onClick),会自动注册为事件监听器。

      Parameters

      • Optionalprops: Record<string, unknown>

        属性数据对象,键为属性名,值为属性值

      Returns this

      返回当前节点实例,支持链式调用

      此方法通常用于从序列化数据恢复节点状态,或在创建节点时批量设置属性。 对于不存在的属性,会被忽略而不会报错。

    • 通过脚本数据列表重置节点的脚本

      会先清除现有脚本,然后根据数据创建新脚本。 此方法通常用于从序列化数据恢复节点的脚本状态。

      Parameters

      Returns this

      当前节点实例,支持链式调用

      脚本创建过程会使用注册系统查找对应的脚本类,并实例化。 创建后会自动设置脚本的属性,并将脚本添加到节点。

    • 绘制当前路径的描边

      Parameters

      • Optionaloptions: {
            cap?: CanvasLineCap;
            color?: ColorData;
            dash?: number[];
            dashOffset?: number;
            join?: CanvasLineJoin;
            miterLimit?: number;
            width?: number;
        }

        描边选项

      Returns this

      当前实例,支持链式调用

    • 更新滤镜状态,当滤镜参数变化时调用

      当滤镜的参数发生变化时,应调用此方法以确保变化生效。

      Type Parameters

      • T extends Filter

      Parameters

      • filter: T

        要更新的滤镜实例

      Returns this

      当前节点实例,支持链式调用

    • 将世界坐标转换为本地坐标

      将世界坐标系(或指定根节点坐标系)中的点转换为节点本地坐标系中的点。 此方法常用于处理输入事件、拖放操作和相对定位等场景。

      Type Parameters

      Parameters

      • position: IPoint

        世界坐标位置

      • Optionalout: P

        输出结果的对象(可选,不提供则创建新对象)

      • Optionalroot: LikoNode

        相对参考节点,为空则默认相对于舞台

      Returns P

      返回转换后的本地坐标

      转换过程会考虑节点及其所有父节点的位置、缩放和旋转的逆变换。 如果指定了 root 参数,则输入坐标将被视为相对于该节点的坐标。 此方法是 localToWorld 的逆操作。