LiteGraph.js 类型定义文档
概述
LiteGraph.js 是一个用于在浏览器中创建节点图的JavaScript库。本文档基于其TypeScript类型定义文件,提供了完整的API参考和中文说明。
基础类型
Vector2
1 | type Vector2 = [number, number]; |
说明: 二维向量类型,表示 [x, y] 坐标。
Vector4
1 | type Vector4 = [number, number, number, number]; |
说明: 四维向量类型,通常用于表示边界框 [x, y, width, height]。
widgetTypes
1 | type widgetTypes = "button" | "toggle" | "slider" | "number" | "combo" | "text"; |
说明: 小部件类型枚举,定义了可用的UI控件类型。
SlotShape
1 | type SlotShape = 0 | 1 | 2 | 3 | 4; |
说明: 插槽形状类型,定义了节点输入/输出插槽的视觉形状。
插槽接口
INodeSlot
1 | interface INodeSlot { |
说明: 节点插槽的基础接口,定义了插槽的基本属性。
INodeInputSlot
1 | interface INodeInputSlot extends INodeSlot { |
说明: 输入插槽接口,继承自基础插槽接口。
INodeOutputSlot
1 | interface INodeOutputSlot extends INodeSlot { |
说明: 输出插槽接口,可以连接到多个输入插槽。
小部件接口
WidgetCallback
1 | type WidgetCallback<T extends IWidget> = ( |
说明: 小部件回调函数类型,当小部件值发生变化时调用。
IWidget
1 | interface IWidget { |
说明: 小部件基础接口,定义了所有小部件的通用属性。
具体小部件类型
IButtonWidget
1 | interface IButtonWidget extends IWidget { |
说明: 按钮小部件,用于触发操作。
IToggleWidget
1 | interface IToggleWidget extends IWidget { |
说明: 切换开关小部件,用于布尔值输入。
ISliderWidget
1 | interface ISliderWidget extends IWidget { |
说明: 滑块小部件,用于数值范围选择。
INumberWidget
1 | interface INumberWidget extends IWidget { |
说明: 数字输入小部件,用于精确数值输入。
IComboWidget
1 | interface IComboWidget extends IWidget { |
说明: 下拉选择小部件,用于从预定义选项中选择。
ITextWidget
1 | interface ITextWidget extends IWidget { |
说明: 文本输入小部件,用于字符串输入。
上下文菜单
IContextMenuItem
1 | interface IContextMenuItem { |
说明: 上下文菜单项接口,定义菜单项的属性和行为。
IContextMenuOptions
1 | interface IContextMenuOptions { |
说明: 上下文菜单配置选项。
LiteGraph 全局对象
LiteGraph 常量
1 | declare const LiteGraph: { |
说明: LiteGraph全局对象,包含所有常量、配置和工具函数。
LGraph 类
静态属性
1 | static supported_types: string[]; // 支持的数据类型 |
构造函数
1 | constructor(o?: any); |
说明: 创建新的图实例。
实例属性
1 | list_of_graphcanvas: LGraphCanvas[]; // 关联的画布列表 |
主要方法
图管理
1 | clear(): void; // 清空图 |
节点操作
1 | add(node: LGraphNode, skipComputeOrder?: boolean): void; // 添加节点 |
连接管理
1 | connect(nodeA_id: number, slotA: number, nodeB_id: number, slotB: number): LLink | null; // 连接节点 |
序列化
1 | serialize(): any; // 序列化图 |
执行控制
1 | updateExecutionOrder(): void; // 更新执行顺序 |
LLink 类
构造函数
1 | constructor( |
说明: 创建节点间的连接链接。
属性
1 | id: number; // 链接ID |
方法
1 | serialize(): any; // 序列化链接 |
LGraphNode 类
静态属性
1 | static title: string; // 节点标题 |
构造函数
1 | constructor(title?: string); |
说明: 创建新的图节点。
实例属性
1 | id: number; // 节点ID |
配置和序列化
1 | configure(info: any): void; // 配置节点 |
属性管理
1 | setProperty(name: string, value: any): void; // 设置属性 |
数据流
1 | getInputData(slot: number, force_update?: boolean): any; // 获取输入数据 |
插槽管理
1 | addInput(name: string, type: string, extra_info?: any): INodeInputSlot; // 添加输入 |
连接操作
1 | connect(slot: number | string, targetNode: LGraphNode, targetSlot: number | string): any | null; // 连接到其他节点 |
小部件管理
1 | addWidget<T extends IWidget>( |
几何和渲染
1 | computeSize(minHeight?: Vector2): Vector2; // 计算大小 |
实用方法
1 | alignToGrid(): void; // 对齐到网格 |
事件回调
1 | // 绘制事件 |
LGraphGroup 类
属性
1 | title: string; // 组标题 |
方法
1 | configure(o: any): void; // 配置组 |
DragAndScale 类
构造函数
1 | constructor(element?: HTMLElement, skipEvents?: boolean); |
说明: 处理画布的拖拽和缩放功能。
属性
1 | offset: [number, number]; // 偏移量 |
方法
1 | bindEvents(element: HTMLElement): void; // 绑定事件 |
LGraphCanvas 类
静态属性
1 | static node_colors: Record<string, { color: string; bgcolor: string; groupcolor: string; }>; // 节点颜色配置 |
静态方法
1 | static getFileExtension(url: string): string; // 获取文件扩展名 |
构造函数
1 | constructor( |
说明: 创建图形画布,负责渲染和交互。
配置属性
1 | allow_dragcanvas: boolean; // 允许拖拽画布 |
画布属性
1 | canvas: HTMLCanvasElement; // 主画布 |
渲染属性
1 | render_shadows: boolean; // 渲染阴影 |
交互状态
1 | selected_nodes: Record<number, LGraphNode>; // 选中的节点 |
事件回调
1 | onDrawBackground: ((ctx: CanvasRenderingContext2D, visibleArea: Vector4) => void) | null; // 绘制背景回调 |
主要方法
画布管理
1 | clear(): void; // 清空画布 |
渲染控制
1 | startRendering(): void; // 开始渲染 |
节点操作
1 | selectNode(node: LGraphNode, add?: boolean): void; // 选择节点 |
视图控制
1 | setZoom(value: number, center: Vector2): void; // 设置缩放 |
交互处理
1 | processMouseDown(e: MouseEvent): boolean | undefined; // 处理鼠标按下 |
绘制方法
1 | drawNode(node: LGraphNode, ctx: CanvasRenderingContext2D): void; // 绘制节点 |
实用方法
1 | resize(width?: number, height?: number): void; // 调整大小 |
ContextMenu 类
静态方法
1 | static trigger(element: HTMLElement, event_name: string, params: any, origin: any): void; // 触发事件 |
构造函数
1 | constructor(values: ContextMenuItem[], options?: IContextMenuOptions, window?: Window); |
说明: 创建上下文菜单。
属性
1 | options: IContextMenuOptions; // 菜单选项 |
方法
1 | addItem(name: string, value: ContextMenuItem, options?: IContextMenuOptions): void; // 添加菜单项 |
工具函数
clamp
1 | function clamp(v: number, min: number, max: number): number; |
说明: 将数值限制在指定范围内。
使用示例
创建基本图形
1 | // 创建图 |
自定义节点
1 | class MyCustomNode extends LGraphNode { |
添加小部件
1 | class NodeWithWidgets extends LGraphNode { |
总结
LiteGraph.js 是一个功能强大的节点图编辑器库,提供了完整的图形编辑、节点管理、数据流处理和用户交互功能。通过其丰富的API,开发者可以创建复杂的可视化编程环境、数据处理流水线或交互式图形应用。
主要特性包括:
- 完整的节点图编辑功能
- 灵活的数据类型系统
- 丰富的UI小部件
- 可扩展的节点类型
- 强大的事件系统
- 高性能的渲染引擎
- 完善的序列化支持
本文档涵盖了所有主要的类、接口和方法,为开发者提供了全面的参考资料。
最后更新: 2025年07月24日 16:07:23
本文链接: http://wuleiai.cn/post/77a7ad3e.html
版权声明: 本作品采用 CC BY-NC-SA 4.0 许可协议进行许可,转载请注明出处!