迁移检查清单
- 继续使用
node.pos、node.size、boundingRect、getBounding()、setPos()、setSize():无需更改签名。 - 将
repositionNodesVueMode()调用替换为applyNodePositions()。 - 如果你依赖
node.size来反映实测或渲染的内容,请改用getBounding()/boundingRect。在 Vue 渲染器下,size现在 严格反映请求的值。传统渲染器仍会增大size以适应 widgets。 - 使用节点/组几何 API,而不是底层存储;不要导入
layoutStore,也不要依赖其内部格式。 - 通过已移除的引用进行写入时,更新的是分离的对象,而不是共享的 布局状态。
变更内容
LGraphNode.pos、size、boundingRect、getBounding()、setPos() 和
setSize() 的方法签名保持不变,这些调用在源码层面仍然兼容。
但行为在以下三种情况下发生了变化。
size 与渲染后的边界
node.size 是你请求的尺寸,也是被序列化的尺寸。在使用 Vue 渲染器时,渲染过程永远不会改变它。getBounding() 和 boundingRect 返回的是渲染后的边界,当控件内容需要更多空间时,它可能大于 size。在使用传统画布渲染器时,节点仍会通过调用 setSize() 来撑开以容纳其控件,因此一次绘制之后 node.size 和已保存的尺寸可能会发生变化。当你需要节点在屏幕上的实际占位时,请使用渲染后的边界。
画布会在每一帧开始时重新计算 getBounding() 和 boundingRect。在你修改 pos 或 size 之后,如果要在同一帧内读取它们,请先调用 node.updateArea()。在使用 Vue 渲染器时,由 DOM 内容引起的尺寸增长只有在节点完成测量后才会出现。
repositionNodesVueMode() 已重命名为 applyNodePositions()
repositionNodesVueMode() 仍可作为弃用的别名调用。