v5 的重大变更
首先,目前支持的最低 Node 版本是 14。JSDOM 可以与 12 版本兼容,这也是我们做出更改的原因,但我们觉得至少应该支持 14 版本。fabricJS 4.x 中保留了一些已弃用的方法和函数,以保持向后兼容性。
圆的起始角和结束角
让我们从最糟糕的变化开始:为了保持一致性,现在 Circle.startAngle 单位 Circle.endAngle 是度,不再是弧度了。
它将所有使用圆形且导出时包含默认值的旧设计作废。这是一个影响巨大的变革,其他所有变革都相当微不足道,应该不会造成任何问题,除非是那些使用了自定义功能和覆盖的项目。
该怎么办
这里有点棘手,导入 JSON 数据时需要附加一个 reviver,或者重写 circle 的 fromObject 方法来保持兼容性。
myCanvas.loadFromJSON(data,
// callback, usually a re-render and some specific app code
() => { myCanvas.requestRenderAll() },
// the reviver
(data, instance, error) => {
// detect that version is less than 5
if (parseInt(data.version.slice(0, 1), 10) < 5) {
instance.startAngle = fabric.util.radiansToDegrees(data.startAngle);
instance.endAngle = fabric.util.radiansToDegrees(data.endAngle);
}
},
);已移除转换事件
那些事件已经过去了:
* @fires object:rotated at the end of a rotation transform
* @fires object:scaled at the end of a scale transform
* @fires object:moved at the end of translation transform
* @fires object:skewed at the end of a skew transform这些事件是 3.x 及更早版本控制逻辑的遗留产物。不要将它们与缩放、旋转、移动、倾斜混淆。这些事件是在变换结束时,当发生上述某些操作时触发的。可以将它们视为叠加在变换层之上的额外细节 object:modified 。
作为此项变更的副作用, _addEventOptions 私有且已弃用的 canvas 方法已被移除。该方法的唯一用途是支持此功能。
该怎么办
如果您需要此信息,可以检查事件中 object:modified 的 action 属性。
myRect.on('modified', (opt) => {
// inspect action and check if the value is what you are looking for
const action = opt.action;
});选择事件属性
事件(例如 selection:updated 和 selection:created 不再具有以下属性:
- updated
- target
这些是移除旧事件后遗留的兼容性属性。这些属性引用了一个 fabric.Object 对象。
该怎么办
在同一事件中,您可以查看已选和未选属性,其中包含一个事件数组。该数组的第一个元素是这些属性所引用的内容。
移除已弃用的方法
Object.calcCoords 和 Object._calcDimensionsTransformMatrix , group.realizeTransform 都已移除。自从我们引入了不同的坐标集 aCoords 和 oCoords 之后,通用方法 calcCoords 就不再有用了。它已不再用于内部计算,并被保留下来,以避免干扰版本 4 的发布。未来我们希望只保留 aCoords 。
Object._calcDimensionsTransformMatrix 之前它处理的是边界框变换的特定情况。不久前,我们引入了一个可以实现相同功能的通用工具,但该工具 calcDimensionsMatrix 已 _calcDimensionsTransformMatrix 被弃用,并且调用时使用 calcDimensionsMatrix 了以下参数:
_calcDimensionsTransformMatrix: function(skewX, skewY, flipping) {
return util.calcDimensionsMatrix({
skewX: skewX,
skewY: skewY,
scaleX: this.scaleX * (flipping && this.flipX ? -1 : 1),
scaleY: this.scaleY * (flipping && this.flipY ? -1 : 1)
});
}fabricJS 中也存在类似的情况 group.realizeTransform ,该函数未使用,并且除了它所调用的通用工具函数之外,没有提供任何功能。
realizeTransform: function(object, parentMatrix) {
fabric.util.addTransformToObject(
object,
parentMatrix || this.calcTransformMatrix()
);
return object;
},该怎么办
对于 calcCoords,只需在需要时调用 calcACoords 或 calcOCoords 即可。对于 _calcDimensionsTransformMatrix 和 realizeTransform,请按照代码片段所示调用相应的实用程序。
路径利用已移除
由于 v4.x 版本进行了路径简化,以下实用程序不再使用,但为了兼容性而保留: utils.getBoundsOfArc , utils.drawArc , utils.fromArcToBeizers , utils.drawDashedLine 这些实用程序现已移除。
该怎么办
drawDashedLine 这些功能 getBoundsOfArc 已 drawArc 被移除。如果您确实需要它们,则需要将它们复制回您的代码并自行维护。FabricJS utils.fromArcToBeizers 内部仍然保留了有趣的部分供内部使用,如果您需要使用它,则需要自行将其公开。
发布评论
评论列表 0





